【发布时间】:2019-07-08 20:33:32
【问题描述】:
我正在尝试添加一个自定义资源/范围,为了我的测试,我选择了它作为电子邮件,但据我所知,它可以是任何值。所以对于我的资源,我有这个:
return new List<IdentityResource>
{
new IdentityResources.OpenId(),
new IdentityResources.Profile(),
new IdentityResource("email", "Email", new [] { "email" })
//new IdentityResources.Email() -- This was tried as well, same error.
};
return new List<ApiResource> { new ApiResource("test", "Test") };
那么对于客户端的作用域如下:
AllowedScopes = new List<string>
{
"openid", "profile", "email", "test"
}
但是,当我请求带有 http://localhost:5000/connect/authorize?Scope=test email 的令牌时,页面错误并在我的低谷中看到
2019-07-05 11:08:00.681 -04:00 [ERR] 无效范围:电子邮件
2019-07-05 11:08:00.684 -04:00 [ERR] 请求验证失败
我真的不确定我哪里出错了。根据我发现的所有文档和 SO 帖子,这就是它的完成方式。
编辑:有一个内部错误被忽略并导致错误的List<IdentityResource> 被传递。但是,即使解决了这个问题,它现在仍然会导致出现不同错误消息的问题:
身份相关范围请求,但没有 openid 范围
编辑 2:
在 d_f 的一些帮助之后,我意识到我需要更新我的请求,现在看起来像这样:
/connect/authorize?scope=test openid email&response_type=id_token token&nonce=NONCE
我现在获得了授权,并且可以在声明中看到电子邮件范围。但是,即使我将电子邮件视为一个范围,我也没有在声明中的任何地方看到实际的电子邮件。
【问题讨论】:
-
您的请求错过了
openid范围。协议始终要求的唯一
标签: c# asp.net-core scope resources identityserver4