IdentityServer4无效的授权代码{“代码”:

时间:2020-09-14 09:04:03

标签: oauth-2.0 identityserver4

我收到无效的授权码{“ code”:“ MyTestCode”},

以下是更详细的错误: 无效的授权码{“ code”:“ MyTestCode”},详细信息:{“ ClientId”:“ AuthorizationCodeClientFlow”,“ ClientName”:“ Authorization Code Client”,“ GrantType”:“ authorization_code”,“ Scopes”:null,“ AuthorizationCode “:” MyTestCode“,” RefreshToken“:null,” UserName“:null,” AuthenticationContextReferenceClasses“:null,” Tenant“:null,” IdP“:null,” Raw“:{” grant_type“:” authorization_code“,”代码”:“ MyTestCode”,“ redirect_uri”:“ https:// localhost:5000 / oauth / callback”,“ client_id”:“ AuthorizationCodeClientFlow”},“ $ type”:“ TokenRequestValidationLog”}

我正在使用邮递员进行测试 enter image description here

这是从此代码生成的客户端:

            {
                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 个答案:

答案 0 :(得分:0)

您需要获取从初始身份验证请求中收到的授权码,然后将其从令牌端点获取令牌时传递给它。

一个不相关的事情是,在对IdentityServer进行身份验证时,应始终要求 openid 范围,“全部”或“”无效。