请参阅底部的最终问题
所以我了解acr值的基本概念。我知道它“指定了一组要求身份验证才能满足的业务规则。这些规则通常可以通过单独使用或组合使用多种不同的特定身份验证方法来满足。”
但是我对返回值感到困惑。我知道,如果我在响应范围内请求acr声明(作为基本声明),则必须为特定的身份验证上下文类引用指定values参数。
这是我感到困惑的地方。当寻找acr返回值(身份验证上下文类参考)时,我发现可以参考(https://www.iana.org/assignments/loa-profiles/loa-profiles.xhtml)的许多不同的LOA配置文件。但是,OIDC文件中似乎只引用了一个概要文件(并且与美国有关)-InCommon。
当我搜索InCommon的网站时,我不清楚是否需要对IdP进行InCommon认证以返回ACR值。
以下摘录来自InCommon网站:
”它如何工作? InCommon社区已开发并发布了铜牌和银牌配置文件,这些配置文件定义了身份提供商必须满足的特定标准才能获得认证。身份提供商将这些标准整合到其身份和访问管理系统中。 对于Bronze,身份提供者可以进行审核以证明其符合个人资料,也可以简单地签署一项符合条件的声明(自我声明)。 Silver需要进行审核,通常可以由与IT操作不直接相关的内部审核员来完成。“
由于OIDC文档将acr的“ return”值示例为:
,我对返回值的工作方式也感到困惑。“ acr”:{“ values”:[“骨灰盒:ace:incommon:iap:silver”]}
但是,当我在Microsoft网站上查看acr返回值示例时,它给出的acr返回值为0。
“ acr”:“ 0”
所以我的最后一个问题是: 1.有人可以解释一下是否要求对IdP(提供令牌)进行认证以提供acr返回值。 2.返回值是“ incommon:iap:silver”还是“ 0”?
答案 0 :(得分:0)
您可以将ACR值视为客户端和idp同意以传达发生的身份验证级别所同意的一组任意值。这是为了使客户对所进行的身份验证有一定的信心。
它们没有“官方”价值。它们应该通过OIDC发现响应的acr_values_supported
参数进行通信。有关更多信息,请参阅[https://openid.net/specs/openid-connect-discovery-1_0.html](OpenID Connect Discovery 1.0)。
由于它们不是必需的参数,因此在实现和解释它们方面有很大的灵活性。据我了解,IDP会根据请求中提供的acr_values
执行身份验证过程。通常,这意味着如果客户端提供IDP可以理解的值,它将得到尊重。但是,如果提供了不受支持的值,则不能保证将对其进行解释(也不会导致错误),并且IDP可能只是诉诸默认身份验证过程,并将相应的ACR值返回给客户端。 / p>
另一方面,客户端可以选择检查ID令牌中的acr_values
字段,并确定所发生的身份验证级别是否真正满足客户端需要执行的操作。如果是这样,继续进行身份验证;如果不是,则拒绝身份声明。
希望它能解决您的问题。
答案 1 :(得分:0)