Thinktecture Identity Server声称

时间:2015-03-25 22:29:50

标签: claims-based-identity thinktecture-ident-server thinktecture identityserver3

我使用Thinktecture Identity Server V3进行身份验证,并且在从HttpContext.Current.User获取信息时遇到问题。

我使用API​​来处理调用,但是当我调用HttpContext.Current.User时,ID不能仅由Identity Server设置的声明使用。

当我通过signalR拨打电话时,集线器HttpContext.Current.User为空,我无法获取用户ID,甚至无法查看cliams。

我目前正在使用挂钩到AspNetIdentity并覆盖PostAuthenticateLocalAsync并尝试将用户管理器用于CreateIdentityAsync的自定义用户服务,但这会失败。

有没有办法在登录时填充默认声明并检索信号器连接和Web API调用的详细信息?

由于

2 个答案:

答案 0 :(得分:0)

你最终解决了这个问题吗?

我对Thinktecture Identity Server来说还是一个新手,但是我会对此采取措施。

Scope上有一个选项IncludeAllClaimsForUser,默认情况下设置为false。根据我正在阅读的内容,此选项将在调用GetProfileAsync()端点时删除过滤器。

以下是我发现此信息的链接:

http://identityserver.github.io/Documentation/docs/configuration/scopesAndClaims.html

https://github.com/IdentityServer/IdentityServer3/issues/621

答案 1 :(得分:0)

在我有时间搞清楚之前,我不得不停车。

我确实在填充声明的范围上使用了IncludeAllClaimsForUser属性。我遇到的问题是User.Identity.GetUserId()总是返回null,因为现在它已在声明" sub"中设置。

这不是一个大问题,但是当我在signalR连接上通过持有者令牌时,Current.User始终为空,我甚至无法读取" sub"权利要求。

就像没有在信号R连接上验证不记名令牌,所以我无法获得用户的详细信息。

感谢您的帮助,非常感谢。