Chúng tôi có OWA OAuth 2.0 hoạt động (nhờ this fantastic post) nhưng cần một số thông tin chi tiết hơn về quy trình thực tế chuyển đổi ClaimsIdentity
thành chuỗi access_token
thực tế trong phản hồi HTTP.Mã thông báo OWA OAuth 2 thực sự được tạo như thế nào?
Chúng tôi đang tạo ClaimsIdentity
tại phương pháp này trong Provider OAuth Authorization của chúng tôi:
public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
// <snip>
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
// validation, user checking code here
var identity = new ClaimsIdentity(context.Options.AuthenticationType);
identity.AddClaim(new Claim("sub", context.UserName));
identity.AddClaim(new Claim("role", "user"));
context.Validated(identity);
}
}
Và khi chúng ta thực hiện các yêu cầu HTTP POST như grant_type=password&username=user007&password=jamesbond
(thư giãn, mật khẩu ở đây là ok), chúng tôi nhận được HTTP POST cơ thể phản ứng
{"access_token":"9K8VtOBseU0-XZfdGe2_urn2HESY3jLkpgvowOQFPXsHeWNOrTlTVzfPu35ZEvr4AqSj_b0laesBegtVWuR8R-aItnNXw4vXiuCg0cTNMUKP_yfi89VhD446o2X6ffL8upwZVILpomweSweIVlDmwUDzIwf1ZqubrQ8vuiQDFu-_7vpjPwJ5yVvomQ75agsJWMZk-H_bVWSObds82aM8LCRJwb2bUJchr6_L1GP8xdXqRQz24uDhHvco-XByyMSMzZm-Qo0VVBbocbgP64OJulbihVG_W9e8G69UfbX99pIYiLyE4jixiUtjOKSiMYBISW3_fg","token_type":"bearer","expires_in":1799,"as:client_id":"","userName":"user007",".issued":"Fri, 31 Oct 2014 16:02:05 GMT",".expires":"Fri, 31 Oct 2014 16:32:05 GMT"}
Câu hỏi: logic tạo ra thực tế access_token
chuỗi là gì?
Một số vấn đề cụ thể trong câu hỏi
- cấu trúc nội bộ của rằng
access_token
chuỗi là gì? - Được mã hóa hoặc ký hoặc cả hai? Khóa nào được sử dụng (giả sử IIS/Azure Cloud Service)?
- Làm cách nào chúng tôi có thể ghi đè việc triển khai tạo chuỗi thực tế được gửi đi và sau đó kiểm tra cùng một mã thông báo/chuỗi trên các lần truy cập tiếp theo?
Cảm ơn
Đối với điểm thứ ba của mã thông báo tùy chỉnh, nếu thực hiện tùy chỉnh 'CustomTokenFormat: ISecureDataFormat' và cung cấp nó cho thuộc tính 'AccessTokenFormat' của' OAuthAuthorizationServerOptions', cách thực thi xác thực của nó tại thời điểm truy cập? Điều đó có tự động xảy ra bằng cách cung cấp cùng một đối tượng 'OAuthAuthorizationServerOptions' (và do đó cùng' AccessTokenFormat') cho cả 'UseOAuthAuthorizationServer (..)' và 'UseOAuthBearerAuthentication (..)'? –
DeepSpace101
Bạn chính xác, điều này xảy ra tự động.Thời gian hết hạn cho mã thông báo truy cập được thiết lập bằng cách sử dụng thuộc tính 'AccessTokenExpireTimeSpan' trong' OAuthAuthorizationServerOptions' thì đây sẽ là một phần của thuộc tính dữ liệu 'AuthenticationTicket' nơi bạn có thể đọc thuộc tính' ExpiresUtc' trong lớp tùy chỉnh cho 'AccessTokenFormat' , bạn có thể kiểm tra tại đây: [link] (https://github.com/tjoudeh/JWTAspNetWebApi/blob/master/AuthorizationServer.Api/Formats/CustomJwtFormat.cs#l44-47) –
@Taiseer Cách giải mã/xác nhận hợp lệ làm việc quan trọng với cân bằng tải trước nhiều phiên bản máy chủ? –