我正在使用带有.NET Core的IdentityServer 4。
我可以使用grant类型ResourceOwnerPassword('password')成功登录,然后立即调用UserInfo端点。该调用失败,当我检查服务器日志时,我看到:
文档说'至少需要openid范围',日志显示我有,但文档也说,就在此之前,'......取决于授予的范围......' - 范围是什么?在哪里指定UserInfo端点需要哪些范围?我假设我错过了它/他们,但不知道是什么。我有正确的范围来成功命中令牌端点(/ connect / token),但没有正确的范围来成功调用userinfo端点(/ connect / userinfo)。
有人可以帮忙吗?
谢谢!
巴兹
答案 0 :(得分:0)
userinfo端点对openid
范围的最低要求。
这是证明:
的测试答案 1 :(得分:0)
好的我想通了 - 我在UserInfo端点的调用中错过了 AllowedScope 。当我在Startup.Configure()方法中添加范围时,它起作用了:
app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = "http://localhost:5000/",
AllowedScopes = { "api1", "WebAPI" },
RequireHttpsMetadata = false
});
我不明白的是登录本身是如何工作的。范围是在调用登录(/ connect / token)时发送的 - 并且成功。我认为这些范围用于身份验证,因为此类的名称是“..AuthenticationOptions”。我猜这些是在登录期间的选项,而不是用于登录的选项,它们仅在您外出访问资源时使用,例如/ connect / userinfo。也许知道的人可以证实这一点。
感谢您的帮助!
巴兹