IdentityServer:在 ImplicitFlow 中请求资源范围
IdentityServer: requesting resource scopes in ImplicitFlow
如果我使用带有隐式流的客户端,是否可以请求资源范围和身份范围?
我尝试如下创建 OpenIdConnectAuthenticationOptions:
new OpenIdConnectAuthenticationOptions
{
ClientId = "implicitclient",
Authority = ...,
RedirectUri = ...,
ResponseType = "id_token token",
Scope = "identity_scope resource_scope",
...
身份验证时仍然只返回 identity_scope。
感谢任何帮助和意见。
编辑:一些背景知识
我有两个客户端:隐式流客户端和资源所有者流客户端。
我需要在它们之间共享身份和资源范围。
对于隐式流客户端,我开始使用"id_token token" response_type。
对于资源所有者客户端,我首先使用
请求访问令牌
OAuth2Client.RequestResourceOwnerPasswordAsync()
包括所有必需的范围。之后,我使用提供的访问令牌查询 userinfo 端点以获取用户声明。
当然,我想。通常你应该可以询问任何特定的范围,只需用 space:
将它们分开
示例:
范围:"openid profile email roles resourcescope1"、
根据您定义的 'identity_scope' 范围,您不应该改用 openid 范围吗?
在您的客户端从身份服务器收到 id_token 和 access_token 后,客户端有责任立即验证 ID 令牌。
这是通过使用授权 header 中收到的访问令牌作为承载调用用户信息端点来实现的。
用户信息端点通常应该 return 所有请求的范围...您已经尝试过了吗?
顺便说一句:您使用的是什么版本的 IdentityServer?
编辑:同样重要的是要知道:您的 'resource_scope' 是否出现在同意屏幕上?
如果我使用带有隐式流的客户端,是否可以请求资源范围和身份范围?
我尝试如下创建 OpenIdConnectAuthenticationOptions:
new OpenIdConnectAuthenticationOptions
{
ClientId = "implicitclient",
Authority = ...,
RedirectUri = ...,
ResponseType = "id_token token",
Scope = "identity_scope resource_scope",
...
身份验证时仍然只返回 identity_scope。
感谢任何帮助和意见。
编辑:一些背景知识
我有两个客户端:隐式流客户端和资源所有者流客户端。 我需要在它们之间共享身份和资源范围。
对于隐式流客户端,我开始使用"id_token token" response_type。
对于资源所有者客户端,我首先使用
请求访问令牌OAuth2Client.RequestResourceOwnerPasswordAsync()
包括所有必需的范围。之后,我使用提供的访问令牌查询 userinfo 端点以获取用户声明。
当然,我想。通常你应该可以询问任何特定的范围,只需用 space:
将它们分开示例: 范围:"openid profile email roles resourcescope1"、
根据您定义的 'identity_scope' 范围,您不应该改用 openid 范围吗?
在您的客户端从身份服务器收到 id_token 和 access_token 后,客户端有责任立即验证 ID 令牌。
这是通过使用授权 header 中收到的访问令牌作为承载调用用户信息端点来实现的。
用户信息端点通常应该 return 所有请求的范围...您已经尝试过了吗?
顺便说一句:您使用的是什么版本的 IdentityServer?
编辑:同样重要的是要知道:您的 'resource_scope' 是否出现在同意屏幕上?