我使用Thinktecture Identity Server V3进行身份验证,但在从HttpContext.Current.User获取信息时遇到问题。
我使用一个应用程序接口来处理调用,但是当我调用HttpContext.Current.User时,ID是不可用的,只有身份服务器设置的声明可用。
此外,当我通过signalR进行调用时,集线器的HttpContext.Current.User为空,并且我无法获得用户ID,甚至无法查看客户端。
我目前正在使用连接到AspNetIdentity的自定义用户服务并覆盖PostAuthenticateLocalAsync,并尝试使用用户管理器来CreateIdentityAsync,但失败了。
有没有办法在登录时填充默认声明并检索有关signalr连接和Web API调用的详细信息?
谢谢
发布于 2015-04-25 05:22:59
你最终解决了这个问题吗?
我仍然是Thinktecture Identity Server的新手,但我将尝试一下。
作用域上有一个选项IncludeAllClaimsForUser,默认情况下设置为false。根据我正在阅读的内容,此选项将在调用GetProfileAsync()端点时删除过滤器。
以下是我在哪里找到此信息的一些链接:
http://identityserver.github.io/Documentation/docs/configuration/scopesAndClaims.html
https://github.com/IdentityServer/IdentityServer3/issues/621
发布于 2015-04-27 07:56:40
不,我必须把它停下来,直到我有时间弄清楚为止。
我在将填充声明的作用域上使用了IncludeAllClaimsForUser属性。我遇到的问题是User.Identity.GetUserId()总是返回null,因为这现在是在声明"sub“中设置的。
这不是什么大问题,但当我在signalR连接上传递一个承载令牌时,Current.User总是空的,我甚至无法读取"sub“声明。
这就像不记名令牌没有在signalR连接上进行验证一样,所以我无法获取用户的详细信息。
谢谢你的帮助,非常感谢。
https://stackoverflow.com/questions/29267754
复制相似问题