【发布时间】:2018-04-17 20:33:29
【问题描述】:
我目前正在评估 AppAuth (https://appauth.io/) 以用于本机移动应用程序以及当前使用 IdentityServer3 的 STS。我已经像这样配置了一个客户端:
new IdentityServer3.Core.Models.Client
{
Enabled = true,
ClientId = "app",
ClientName = "app",
ClientUri = "app:/",
Flow = Flows.AuthorizationCodeWithProofKey,
RequireConsent = false,
RequireSignOutPrompt = false,
SlidingRefreshTokenLifetime = 28800,
AllowAccessTokensViaBrowser = true,
RedirectUris = new List<string>
{
"app:/signin"
},
PostLogoutRedirectUris = new List<string>
{
"app:/signout"
},
AllowedScopes = new List<string>
{
StandardScopes.OpenId.Name.Name,
StandardScopes.Email.Name.Name,
StandardScopes.Profile.Name.Name,
StandardScopes.Roles.Name.Name,
StandardScopes.OfflineAccess.Name,
}
}
初始授权请求成功,IdentityServer3 返回授权码。现在我尝试了随后的令牌请求,这导致 HTTP 400 带有一个 invalid_client 错误以及 IdentityServer3 日志中的以下消息:
2018-04-17 10:16:38.324 +02:00 [Information] Start token request
2018-04-17 10:16:38.324 +02:00 [Debug] Start client validation
2018-04-17 10:16:38.324 +02:00 [Debug] Start parsing Basic Authentication secret
2018-04-17 10:16:38.324 +02:00 [Debug] Start parsing for secret in post body
2018-04-17 10:16:38.324 +02:00 [Debug] No secret in post body found
2018-04-17 10:16:38.324 +02:00 [Debug] Start parsing for X.509 certificate
2018-04-17 10:16:38.324 +02:00 [Debug] X.509 certificate not found.
2018-04-17 10:16:38.324 +02:00 [Information] Parser found no secret
2018-04-17 10:16:38.324 +02:00 [Information] No client secret found
2018-04-17 10:16:38.324 +02:00 [Information] End token request
2018-04-17 10:16:38.324 +02:00 [Information] Returning error: invalid_client
我是否理解有误,或者为什么 IdentityServer3 不返回访问令牌?
【问题讨论】:
-
你在授权请求中设置了
code_challenge,在令牌请求中设置了code_verifier吗? -
是的。我在返回授权码的授权请求中设置了
code_challenge。我还在令牌请求中设置了code_verifier,导致客户端响应无效。 -
我刚刚尝试了@Kahbazi 的建议。在 IdSrv3 中的客户端配置中添加客户端密码并在令牌请求中另外设置授权标头后,我得到一个 id 和访问令牌。
-
是的,但奇怪的是,您需要为此流程提供客户端密码。请参阅:github.com/IdentityModel/IdentityModel.OidcClient/issues/25
-
好像是 IdentityServer3 问题github.com/IdentityServer/IdentityServer3.Samples/issues/304
标签: oauth openid identityserver3 appauth