如何在ProfileDataRequestContext中包含access_token声明?

时间:2016-06-15 19:13:15

标签: c# .net oauth-2.0 identityserver3

这是我之前提问here的后续问题。我的问题是,当我查询自定义UserInfoEndpoint时,我希望来自我的访问令牌(在请求中作为承载令牌发送)的声明成为上下文ProfileDataRequestContext的一部分。问题是它们不是,特别是我希望ticket声明在上下文中,但是上下文是空的(除了我理解的sub总是存在)。

请参阅我之前关于实施的问题,因为我不想在此重新发布所有内容。

提前致谢...

记录以供参考......

2016-06-15 13:52:11.508 -05:00 [Information] Creating userinfo response
2016-06-15 13:52:11.513 -05:00 [Information] Scopes in access token: "app openid offline_access appaccess"
2016-06-15 13:52:11.514 -05:00 [Information] Requested claim types: "applicationDto sub"
2016-06-15 13:52:11.514 -05:00 [Debug] Getting ProfileDataAsync
2016-06-15 13:52:11.514 -05:00 [Debug] The claims in the context...
2016-06-15 13:52:11.514 -05:00 [Debug] Claims sub 783bf872-b864-4042-853d-04fbcb7a505a
2016-06-15 13:52:11.514 -05:00 [Debug] The requseted claims...
2016-06-15 13:52:11.514 -05:00 [Debug] Cliams applicationDto
2016-06-15 13:52:11.514 -05:00 [Debug] Cliams sub
2016-06-15 13:52:11.514 -05:00 [Debug] Finished ProfileDataAsync
2016-06-15 13:52:11.514 -05:00 [Information] Profile service returned to the following claim types: "sub"
2016-06-15 13:52:11.514 -05:00 [Information] End userinfo request
2016-06-15 13:52:11.516 -05:00 [Information] Returning userinfo response.

更新: 在github上讨论了这个问题之后,确定不支持这个问题,建议我把票放在id_token中,但这仍然无法解决问题。

有什么方法可以将ticket声明作为UserInfoEndpoint上下文的一部分?

更新后记录...

2016-06-16 12:23:08.023 -05:00 [Information] Creating userinfo response
2016-06-16 12:23:08.027 -05:00 [Information] Scopes in access token: "app openid offline_access appaccess"
2016-06-16 12:23:08.028 -05:00 [Information] Requested claim types: "applicationDto sub ticket"
2016-06-16 12:23:08.028 -05:00 [Debug] Getting ProfileDataAsync
2016-06-16 12:23:08.028 -05:00 [Debug] Claims in Claims in the context...
2016-06-16 12:23:08.028 -05:00 [Debug]     "sub : 783bf872-b864-4042-853d-04fbcb7a505a"     
2016-06-16 12:23:08.028 -05:00 [Debug] Claims in Requested Claims...
2016-06-16 12:23:08.028 -05:00 [Debug]     "applicationDto"     
2016-06-16 12:23:08.028 -05:00 [Debug]     "sub"     
2016-06-16 12:23:08.028 -05:00 [Debug]     "ticket"     
2016-06-16 12:23:08.028 -05:00 [Debug] Claims in Issued Claims...
2016-06-16 12:23:08.028 -05:00 [Debug]     "sub : 783bf872-b864-4042-853d-04fbcb7a505a"     
2016-06-16 12:23:08.028 -05:00 [Debug] Finished ProfileDataAsync

1 个答案:

答案 0 :(得分:2)

这种期望是错误的 - userinfo是一个OpenID Connect概念,是另一种获取身份令牌中的声明的方法。不是访问令牌。

这就是说 - 在用户服务的GetProfileDataAsync方法中,您可以从上下文中检测是否通过userinfo端点调用,并且可以返回您喜欢的任何声明。