#oauth-2.0 #identityserver4
#oauth-2.0 #identityserver4
Вопрос:
Я получаю неверный код авторизации{«code»: «MyTestCode»},
Вот более подробная ошибка: Неверный код авторизации{«code»: «MyTestCode»}, подробности: {«ClientID»: «AuthorizationCodeClientFlow», «ClientName»: «Код авторизации клиента», «GrantType»: «authorization_code», «Scopes»: null, «AuthorizationCode»: «MyTestCode», «refreshToken»: null, «UserName»: null , «AuthenticationContextReferenceClasses»: null, «Tenant»: null, «IdP»: null, «Raw»: {«grant_type»: «authorization_code», «code»: «MyTestCode», «redirect_uri»: «https://localhost:5000/oauth/callback «, «client_id»: «AuthorizationCodeClientFlow»}, «$type»: «TokenRequestValidationLog»}TokenRequestValidator>
Это клиент, созданный на основе этого кода :
{
ClientName = "Authorization Code Client",
ClientId = "AuthorizationCodeClientFlow",
AllowedGrantTypes = GrantTypes.Code,
ClientSecrets =
{
new Secret("AuthorizationCodeClientFlowSecret".Sha512())
},
AllowedScopes =
{
"all"
},
RedirectUris =
new List<string> {
"https://localhost:5000/oauth/callback"
},
AllowOfflineAccess = false,
AccessTokenLifetime = 60
};
https://localhost:5105/oauth/authorize работает нормально. Я получаю ошибку в https://localhost:5105/oauth/token шаг. Когда я проверяю запрос таким образом:
var form = (await _httpContextAccessor.HttpContext.Request.ReadFormAsync()).AsNameValueCollection();
var validationResult = await _requestValidator.ValidateRequestAsync(form, clientResult);
if (validationResult.IsError)
{
return new IdpTokenResponse
{
Custom = new Dictionary<string, object>
{
{ "Error", validationResult.Error },
{ "ErrorDescription", validationResult.ErrorDescription }
}
};
}
Ответ №1:
Вам нужно взять код авторизации, который вы получаете из первоначального запроса на аутентификацию, а затем взять его и передать вместе с ним, когда вы получаете токен от конечной точки токена.
одна несвязанная вещь заключается в том, что вы всегда должны запрашивать область OpenID при аутентификации на IdentityServer, All или «» недопустимо.
Комментарии:
1. Отлично! Не стесняйтесь отмечать ответ как приемлемый 🙂