OAuth2Client clientId和clientSecret未设置

时间:2015-11-10 07:58:08

标签: c# authentication oauth-2.0 identityserver3

我已经设置了一个正常运行的IdentityServer 3,除了我尝试添加的刷新令牌外,一切正常。

我避免报告整个代码,因为我认为我发现了错误

var tokenClient = new OAuth2Client(new Uri("https://myServer/myIdentityServer/connect/token"), "clientId", "secretWord");
var response = await tokenClient.RequestAuthorizationCodeAsync(n.Code, n.RedirectUri);

我在第二行收到错误,调试后发现tokenClient变量包含一些设置为null但不应该

的私有属性
  

_address:{https://myServer/myIdentityServer/connect/token}

     

_authenticationStyle:无

     

_client:{System.Net.Http.HttpClient}

     

_clientId:null

     

_clientSecret:null

为什么_clientId_clientSecret设置为null?我将2个参数直接提供给OAuth2Client构造函数,我在这里做错了吗?

更新:根据Scott Brady的建议,我还尝试了来自TokenClient的{​​{1}}课程。没有任何变化,IdentityModel变量报告HttpError"内部服务器错误"。

从IdentityServer端,一切似乎都很好,请求的第一部分的日志是好的

response

但第二部分似乎还不错

2015-11-10 14:31:36.737 +01:00 [Information] Start authorize request
2015-11-10 14:31:36.737 +01:00 [Information] Start authorize request protocol validation
2015-11-10 14:31:36.738 +01:00 [Information] "Authorize request validation success"
 "{
  \"ClientId\": \"hybridclient\",
  \"ClientName\": \"Hybrid Client Example\",
  \"RedirectUri\": \"https://rbmidde02.xxx.com/miIdentityClient/\",
  \"AllowedRedirectUris\": [
    \"https://rbmidde02.xxx.com/miIdentityClient/\"
  ],
  \"SubjectId\": \"1\",
  \"ResponseType\": \"code id_token token\",
  \"ResponseMode\": \"form_post\",
  \"Flow\": \"Hybrid\",
  \"RequestedScopes\": \"openid profile email roles offline_access\",
  \"State\": \"OpenIdConnect.AuthenticationProperties=joIq4Na_pIjM1dGht8LPOhXbzPjnHnlFgOPll_oxPbAH9GIuFQ5SKHUZWgRFUih_OFGTWxmi8I_Fu7pS_t_V_R2cNDa7l6r0eQ4RfgTosHHhmdpfm-0YuAO-N5q_16WyqesLPckv6HrB7ruZ64m8Vu4mpA80RYjc46xalOdzkyrKQLlmt_AwlWGA6XY-B2P3WpVvcP_tZQywdMEFS9uF-ucK07UOeUwO6nV8QXGJ-g31WhmM4D1I83O3EaYnoB2Xf6bOAMJuMySTywwQQ-bdd-tiOoRsusqSuc-JeeOiZvY\",
  \"Nonce\": \"635827590967269474.ZmM0NjgwYzMtZTYwMC00MmI5LTk5YzUtZjdhMmQ4MTkyZTUwNDBjZTkwYzEtYTBlNy00MDM2LTk4ZjUtMWEzYmZjZmZmMTc2\",
  \"SessionId\": \"7eb1b6356ef9ecb843dde1afdb239d9e\",
  \"Raw\": {
    \"client_id\": \"hybridclient\",
    \"redirect_uri\": \"https://rbmidde02.xxx.com/miIdentityClient/\",
    \"response_mode\": \"form_post\",
    \"response_type\": \"code id_token token\",
    \"scope\": \"openid profile email roles offline_access\",
    \"state\": \"OpenIdConnect.AuthenticationProperties=joIq4Na_pIjM1dGht8LPOhXbzPjnHnlFgOPll_oxPbAH9GIuFQ5SKHUZWgRFUih_OFGTWxmi8I_Fu7pS_t_V_R2cNDa7l6r0eQ4RfgTosHHhmdpfm-0YuAO-N5q_16WyqesLPckv6HrB7ruZ64m8Vu4mpA80RYjc46xalOdzkyrKQLlmt_AwlWGA6XY-B2P3WpVvcP_tZQywdMEFS9uF-ucK07UOeUwO6nV8QXGJ-g31WhmM4D1I83O3EaYnoB2Xf6bOAMJuMySTywwQQ-bdd-tiOoRsusqSuc-JeeOiZvY\",
    \"nonce\": \"635827590967269474.ZmM0NjgwYzMtZTYwMC00MmI5LTk5YzUtZjdhMmQ4MTkyZTUwNDBjZTkwYzEtYTBlNy00MDM2LTk4ZjUtMWEzYmZjZmZmMTc2\"
  }
}"
2015-11-10 14:31:36.738 +01:00 [Information] Creating Hybrid Flow response.
2015-11-10 14:31:36.738 +01:00 [Information] Creating Implicit Flow response.
2015-11-10 14:31:36.749 +01:00 [Information] Getting claims for identity token for subject: 1
2015-11-10 14:31:36.757 +01:00 [Information] End authorize request
2015-11-10 14:31:36.757 +01:00 [Information] Posting to https://rbmidde02.xxx.com/miIdentityClient/

IdentityServer方面的响应是可以的,我不明白为什么客户端会出现内部服务器错误。

1 个答案:

答案 0 :(得分:2)

我对OAuth2Client课程没有多少经验。但是我知道来自IdentityModel的TokenClient类与Identity Server一起工作,并且使用与上面几乎完全相同的代码。

我建议给它一个机会,因为它是由与Identity Server相同的团队制作的。

有关使用示例和GitHub存储库,请参阅here