当前位置: 首页 > 知识库问答 >
问题:

自定义声明包含在隐式流中,但不包含在PKCE流中

东门阳飇
2023-03-14

由于某种原因,当使用授权代码流(response_type=code)时,我的令牌配置没有得到尊重。id和auth令牌中都缺少组织displayName

当我使用隐式授予流(response_type=id_token)时,它按预期工作(组织displayName存在于id令牌中)。

配置包括在下面。原因是什么?

  <UserJourneys>
    <UserJourney Id="DefaultSignin">
      <OrchestrationSteps>
        <OrchestrationStep Order="5" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
      </OrchestrationSteps>
    </UserJourney>
  </UserJourneys>

  <RelyingParty>
    <DefaultUserJourney ReferenceId="DefaultSignin" />
    <TechnicalProfile Id="JWTSignin">
      <DisplayName>JWT Sign In</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="sub" />
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="organization" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>

共有2个答案

邰建业
2023-03-14

原因是我有Protocol=None,我应该有Protocol=OpenIdConnect

两件奇怪的事:

  • 那么为什么它对隐式流起作用呢?
  • 我肯定这不是我发明的,它必须来自自定义策略启动包或其他MSFT示例之一
       <TechnicalProfiles>
         <TechnicalProfile Id="JwtIssuer">
           <DisplayName>JSON Web Token Issuer</DisplayName>
-          <Protocol Name="None" />
+          <Protocol Name="OpenIdConnect" />
           <OutputTokenFormat>JWT</OutputTokenFormat>
           <Metadata>
             <Item Key="client_id">{service:te}</Item>
白昊东
2023-03-14

•当您使用授权代码流,即response_type=code时,客户机id和授权令牌中缺少组织和显示名称,因为在授权代码流中,访问令牌通过安全连接通过HTTPS SSL和TLS加密传递,因为它是由OAuth提供商发布的,而OAuth提供商向我们提供了授权,不可能在URL参数中直接传递访问令牌,因为URL参数是HTTP请求的一部分,而HTTP请求又可能成为中间人攻击的牺牲品。因此,当您使用授权码流传递令牌时,将提供一个中介一次性使用“授权码”,只有合法的接收者才能交换(因为您需要客户机密),并且该代码对于通过未加密的交易拦截请求的潜在黑客将是无用的(因为他们不知道客户的秘密)。

•同样,在隐式流中,关于授权令牌的通信不太安全,因为可能存在潜在的攻击向量,例如在重定向时通过劫持客户端网站的IP地址欺骗域,因为隐式流中的访问令牌直接作为散列片段传递,而散列片段虽然可以读取,但不属于URL参数的一部分通过在浏览器的客户端运行java脚本,您可以在授权代码流中通过隐式流访问令牌散列来读取颁发者的数据,要读取的数据旨在由拥有HTTPS SSL连接证书私钥的客户端读取,因为即使您访问令牌,它也由授权码保护,授权码应通过客户端ID/客户端密码解密,然后仅通过HTTPS SSL连接解密。

•因此,授权代码流中未显示详细信息,因为令牌被截获,用于通过HTTPS授权客户端的访问连接。

有关更多信息,请查看以下链接:-

为什么OAuth2中有一个“授权代码”流,而“隐式”流工作得这么好?

https://aaronparecki.com/oauth-2-simplified/

 类似资料:
  • 转换为fxml 我总是从javafx.fxml.loadException类型中得到错误代码:也许有比创建自定义类更好的解决方案。但我需要一个标签与自定义接口(连接)。也许另一个解决方案是创建一个只包含标签的fxml文件,并通过接口为此设置一个控制器类。 编辑:

  • 问题内容: 我正在尝试在Hadoop流作业中包括一个python软件包(NLTK),但不确定如何通过CLI参数“ -file”手动不包括每个文件来执行此操作。 编辑:一种解决方案是在所有从站上安装此软件包,但是我目前没有该选项。 问题答案: 我会将软件包压缩为a或a,然后将整个tarball或归档文件作为选项传递给hadoop命令。过去我是用Perl做到的,而Python却没有。 也就是说,如果你

  • 问题内容: 有没有办法让DTColumnBuilder.newColumn.renderWidth包含自定义指令?这是我要实现的代码草案。 问题答案: 您可以在回调中包含单元格内容。这是一个非常简单的示例,该伪指令仅将文本着色为红色。很抱歉没有使用箭头功能:) 指令: 演示-> http://plnkr.co/edit/aok6SyWZlLaQv8UsEVIf?p=preview

  • 我已经和这件事斗争了一天多,在SO和其他地方读了很多帖子,但我仍然有问题。 我需要在一个自包含的JavaFX应用程序包中包含我的应用程序图标。我使用的是JDK1.8.0_45及其包含的JavaFX包。我正在使用Maven构建.exe,除了我不能包含我的图标外,它都运行得很好。 下面是我的pom.xml: 使图标出现在标题栏中的是javapackager部署步骤的参数。这一行告诉inno安装程序使用

  • 问题内容: 我写了一个扩展JPanel的类。是否可以在NetBeans GUI Builder中使用它,并使它在所有自动代码生成中都可以生存? 我在GUI生成器中使用了自定义代码选项将对象实例化为新类,但似乎无法从JPanel更改声明,因此仅调用已覆盖的方法,而不能调用new JPanel中不存在的那些。 问题答案: 只需将类从项目树拖到GUI设计器中的表单上即可。

  • 我创建了一个公共日志back-common.xml。我想在另一个文件logback.spring.xml中使用这个文件。请帮助我如何有效地使用它。 截至目前,应用程序正在启动,但不会在控制台中打印日志,并且日志不会填充到日志文件中。请帮忙。不要将其标记为重复,因为我几乎尝试了所有内容,并且我已经为此投入了2天。与此相关的其他问题没有附上有效的答案。 logback-spring.xml logba