- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 OpenID Connect spec azp(授权方)的说法似乎有矛盾。
在 ID token 定义部分 2它说:
azp
OPTIONAL. Authorized party - the party to which the ID Token was issued. If present, it MUST contain the OAuth 2.0 Client ID of this party. This Claim is only needed when the ID Token has a single audience value and that audience is different than the authorized party. It MAY be included even when the authorized party is the same as the sole audience...
但是在 token 验证部分 3.1.3.7 ,其中一个步骤似乎说的是相反的内容:
- If the ID Token contains multiple audiences, the Client SHOULD verify that an azp Claim is present.
有人能解释一下这种明显的差异吗?只有第二个实例使用声明性语言,因此我倾向于在实现中支持这种语言。
最佳答案
你是对的,整个azp
OIDC 的情况令人困惑。不管它的值(value)如何,他们都有一个与之相关的悬而未决的问题;请参阅OIDC - Issue 973 (azp claim underspecified and overreaching) .
From the definition of "aud" in JWT and its use in Connect's ID Token (relevant spec text is copied below), it seems that that the client id of the client/RP that made the authentication request has to be one of the values, or the only value, of the "aud" claim in the ID Token. That's logical and consistent and provides reliable and interoperable guidance to implementers about producing and consuming the ID Token. I think that the client id of the RP/client that made the authentication request should always be represented in the aud of the returned ID Token.
The text around "azp" in the ID Token section and the ID Token Validation section seems to maybe suggest something different, however. Like perhaps that the client id of the RP/client that made the authentication request could, in some totally unspecified circumstance, be the value of the azp claim and that the aud would not identify that client as an intended recipient. Am I misinterpreting things?
就我个人而言,从客户端应用程序开发人员的角度来看,最好的做法似乎是遵守 ID token 验证规则,该规则始终意味着 azp
内的值也将显示为 aud
。然而,根据在线可用的内容,谷歌似乎对它的使用有点不同,所以你可以在 azp
中获得一个值。未在aud
内列出,因此在某些情况下您可能会遵守 Google 规则,而不仅仅是 OIDC。
如果你正在实现一个OP,一个可能不错的选择就是完全远离包含 azp
如果可能的话,在您发行的代币中包含它,或者仅在使用多个受众时才包含它,其中之一也是 azp
中的值.
关于jwt - OpenID 连接标准 : Authorized Party azp Contradiction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41231018/
我知道线程共享地址空间,但不共享栈。这不是自相矛盾吗?为什么说它们共享地址空间是真的,而实际上它们并不共享它们的堆栈 - 堆栈是地址空间的一部分,不是吗? 我假设线程共享堆、数据和代码段而不是堆栈段。
我正在尝试创建一个查询,仅在成员满足 2 个条件时才输出成员。 第一个条件:如果用户有匹配的“courseID”。 第二个条件:如果用户没有匹配的“courseID”。 显然这是矛盾的,所以让我解释一
这个问题在这里已经有了答案: Why does a Try/Catch block create new variable scope? (5 个答案) 关闭 8 年前。 我有以下代码,它在我的类里
导航栏使用 float:left 并排排列列表项。但是,使用 float 不是意味着使用 display:block 吗?因此,既然 block 元素是垂直堆叠的,为什么 float:left 会将它
微软的Bitmap Compression文档,特别是 BI_RLE8(使用行程编码压缩的 8 位索引颜色)的描述,包括以下绝对模式的描述: In absolute mode, the first b
在 OpenID Connect spec azp(授权方)的说法似乎有矛盾。 在 ID token 定义部分 2它说: azp OPTIONAL. Authorized party - the pa
尝试在 Xamarin Studio 中构建我的 Android 项目时,我不断收到如下错误: C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamar
文档中Oracle Database PL/SQL Language Reference 11g Release 2 (11.2) ,“隐式回滚”部分以此文本开头: "Before running a
我阅读了 Robert Martin 关于接口(interface)隔离原则的文章 here .在文章的最后,在解决 ATM UI 架构的问题时,他说: Consider also that each
如果我根据需要定义了 2 个选项,例如: public static void main(String [] args){ Options options= new Options();
我写了一些函数,并编译成一个dll模块。在我的头文件中如下: #ifndef GET_DATAFEED_FORKDB_H #define GET_DATAFEED_FORKDB_H #include
我是一名优秀的程序员,十分优秀!