Tôi đang cố gắng thiết lập Máy chủ danh tính của Thinktecture 3, nhưng dường như tôi không nhận được mã thông báo làm mới khi trao đổi mã ủy quyền (hoặc khi sử dụng luồng ResourceOwner, nhưng tôi sẽ tập trung vào mã ủy quyền vì nó quan trọng hơn với tôi ngay bây giờ). Tôi lấy lại mã thông báo truy cập và có thể sử dụng chúng để xác thực tốt, nhưng nó dường như thậm chí không tạo ra mã thông báo làm mới mà tôi đang mong đợi để lấy lại. Có điều gì đặc biệt mà tôi cần làm để có được Identity Server trả về mã thông báo làm mới không?Máy chủ Identity không trả về mã thông báo làm mới
Tôi đã xem qua tài liệu nhưng chưa thấy bất kỳ điều gì mà tôi đã thiết lập sai và điều duy nhất trên trang của họ trên refresh tokens mà tôi không làm là yêu cầu rõ ràng phạm vi "offline_access" khi gửi người dùng đến đó để xác thực, bởi vì bất cứ khi nào tôi thử tôi nhận được lỗi "phạm vi không hợp lệ". Vì vậy, tôi đang sử dụng cách phân tích của Thinktecture "Yêu cầu phạm vi offline_access (thông qua mã hoặc luồng chủ sở hữu tài nguyên)" có nghĩa là phạm vi offline_access là một thứ được tự động yêu cầu dựa trên luồng bạn đang sử dụng.
Tôi đã cố gắng để làm theo các ứng dụng mẫu của họ (Và các mã nguồn cho Owin Middleware hiện từ Katana Project) như tốt nhất mà tôi có thể, và thiết lập của tôi là như sau:
- Tôi đã tạo khách hàng sử dụng lớp khách hàng của họ, chỉ định theo cách thủ công như sau:
var client = new Client() { ClientId = "SomeId", ClientName = "Client with Authentication Code Flow", RequireConsent = false, //Setting this to true didn't help Flow = Flows.AuthorizationCode, ClientSecrets = new List() { new ClientSecret("secret") }, RedirectUris = new List() { "localhost:/specific-redirect-path" } };
- Tôi đang thực hiện cuộc gọi tới điểm cuối ủy quyền như sau:
var authorizationEndpoint = AuthorizationEndpointBase + "?client_id=" + Uri.EscapeDataString(Options.ClientId) + "&scope=Default" + "&response_type=code" + "&redirect_uri=" + Uri.EscapeDataString(redirectUri) + "&state=" + Uri.EscapeDataString(state); Response.Redirect(authorizationEndpoint);
trong đó "Mặc định" là phạm vi tôi đã tạo. - Trong callback của tôi, tôi gọi là thiết bị đầu cuối mã thông báo như sau:
IReadableStringCollection query = Request.Query; string code = getValueFromQueryString("code", query); var tokenRequestParameters = new List>() { new KeyValuePair("client_id", Options.ClientId), new KeyValuePair("redirect_uri", GenerateRedirectUri()), new KeyValuePair("client_secret", Options.ClientSecret), new KeyValuePair("code", code), new KeyValuePair("grant_type", "authorization_code"), }; var requestContent = new FormUrlEncodedContent(tokenRequestParameters); HttpResponseMessage response = await _httpClient.PostAsync(TokenEndpoint, requestContent, Request.CallCancelled); response.EnsureSuccessStatusCode(); string oauthTokenResponse = await response.Content.ReadAsStringAsync();
Khi tôi thực hiện cuộc gọi đến các thiết bị đầu cuối thẻ, đăng nhập của tôi trên nhận dạng máy chủ sẽ hiển thị như sau (sau khi xác nhận của mã uỷ quyền):
iisexpress.exe Information: 0 : [Thinktecture.IdentityServer.Core.Validation.TokenRequestValidator]: 7/13/2015 1:44:07 PM +00:00 -- Token request validation success { "ClientId": "SomeId", "ClientName": "Client with Authentication Code Flow", "GrantType": "authorization_code", "AuthorizationCode": "f8f795e649044067ebd96a341c5af8c3" } iisexpress.exe Information: 0 : [Thinktecture.IdentityServer.Core.ResponseHandling.TokenResponseGenerator]: 7/13/2015 1:44:07 PM +00:00 -- Creating token response iisexpress.exe Information: 0 : [Thinktecture.IdentityServer.Core.ResponseHandling.TokenResponseGenerator]: 7/13/2015 1:44:07 PM +00:00 -- Processing authorization code request Debug: [Thinktecture.IdentityServer.Core.Services.Default.DefaultTokenService]: 7/13/2015 1:44:07 PM +00:00 -- Creating access token Debug: [Thinktecture.IdentityServer.Core.Services.Default.DefaultTokenService]: 7/13/2015 1:44:07 PM +00:00 -- Creating reference access token iisexpress.exe Information: 0 : [Thinktecture.IdentityServer.Core.Endpoints.TokenEndpointController]: 7/13/2015 1:44:07 PM +00:00 -- End token request iisexpress.exe Information: 0 : [Thinktecture.IdentityServer.Core.Results.TokenResult]: 7/13/2015 1:44:07 PM +00:00 -- Returning token response.
Tôi không chắc chắn điều gì khác sẽ phù hợp, vì vậy tôi sẽ cung cấp thêm thông tin khi cần.
Xin chào, xin lỗi vì nhận xét không liên quan, nhưng tôi có thể lấy mẫu bạn đã tạo bằng máy chủ nhận dạng tạo mã thông báo làm mới, v.v ... không? –
Đáng tiếc, tôi đã xây dựng nó như là một phần của một nhân viên tăng cường mà tôi không còn trên, vì vậy tôi không có quyền truy cập vào các codebase cũng không được phép đăng nó. –