1

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

我正在使用 API 来处理调用,但是当我调用 HttpContext.Current.User 时,ID 仅适用于身份服务器设置的声明。

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

我目前正在使用连接到 AspNetIdentity 的自定义用户服务并覆盖 PostAuthenticateLocalAsync 并尝试使用用户管理器来 CreateIdentityAsync 但这失败了。

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

谢谢

4

2 回答 2

0

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

我对 Thinktecture Identity Server 还是很陌生,但我会尝试一下。

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

这是我在哪里找到此信息的一些链接:

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

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

于 2015-04-24T21:22:59.310 回答
0

不,我必须把它停好,直到我有时间弄清楚。

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

这不是什么大问题,但是当我通过 signalR 连接上的不记名令牌时,Current.User 始终为空,我什至无法阅读“sub”声明。

就像未在 signalR 连接上验证承载令牌一样,因此我无法获取用户详细信息。

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

于 2015-04-26T23:56:39.773 回答