摆弄来自IdentityServer4的quickstart examples并阅读文档我从this page(强调我的)发现了这句话:
OpenID Connect规范指定了几个标准 身份资源。 您提供的最低要求 支持为您的用户发送唯一ID - 也称为 主题ID。这是通过公开标准身份资源来完成的 叫做openid
使用 Quickstart3_ImplicitFlowAuthentication -Solution示例我想我只是尝试省略(在Project QuickstartIdentityServer - file Config.cs )
IdentityResources.Profile()
来自Config.GetIdentityResources
和
IdentityServerConstants.StandardScopes.Profile
来自MVC-Client的AllowedScopes
但是当我尝试调用Secure-View时出现此错误:
抱歉,发生错误: invalid_scope
所以我的问题是,实际上要求Profile
和OpenId
,我是否忘记改变其他内容以使其有效或者我只是误解了引用的陈述?
答案 0 :(得分:2)
我将根据openid specification回答这个问题。
关于 scope
,
必需的。 OpenID Connect请求必须包含openid范围值。如果openid范围值不存在,则完全不指定该行为。可能存在其他范围值。应该忽略实现不理解的使用范围值。有关本规范定义的其他范围值,请参见第5.4节和第11节。
您绝不应删除范围配置中的 IdentityResources.OpenId()
。
此外还有关于 profile
范围
可选的。此范围值请求访问最终用户的默认配置文件声明,其中包括:name,family_name,given_name,middle_name,nickname,preferred_username,profile,picture,website,gender,birthdate,zoneinfo,locale和updated_at。
虽然个人资料是可选的,但我相信这个例子(ImplicitFlowAuthentication)需要让个人资料范围正常运作。因此给出了这个错误。