【问题标题】:Recipient vs Audience in SAML 2.0SAML 2.0 中的收件人与受众
【发布时间】:2025-09-30 23:25:02
【问题描述】:

有人能解释一下 SAML 2.0 中 RecipientAudience 之间的区别吗?

我在这里从 OneLogin 中找到了非常模糊的解释: https://support.onelogin.com/hc/en-us/articles/202673944-How-to-Use-the-OneLogin-SAML-Test-Connector:

收件人会告诉您 SAML 响应的确切对象,但受众会在更广泛的层面上告诉您响应的去向。例如,收件人可能是洋基体育场,而观众可能是纽约市。

但是,我不能 100% 确定它是正确的。我见过 Audience 比 Recipient 更具体。

【问题讨论】:

    标签: saml saml-2.0


    【解决方案1】:

    Recipient 与 SAML 断言的 Subject 元素相关联,该元素与执行身份验证的用户或主题有关,并且主题数据由 IdP 授予该特定收件人(SP) ,谁可以对断言采取行动。

    主题数据,例如 NameID 格式、值(在 IdP 和 SP 之间唯一标识用户或主题)、该 NameID 值采用何种令牌格式(例如:不记名令牌)、谁是 Receipt 和令牌的有效性。通常 Receipt 将是接收断言的 SP 端点。

       ...
       <saml:Subject>
         <saml:NameID
           Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">
           3f7b3dcf-1674-4ecd-92c8-1544f346baf8
         </saml:NameID>
         <saml:SubjectConfirmation
           Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
           <saml:SubjectConfirmationData
             InResponseTo="aaf23196-1773-2113-474a-fe114412ab72"
             Recipient="https://sp.example.com/SAML2/SSO/POST"
             NotOnOrAfter="2004-12-05T09:27:05"/>
         </saml:SubjectConfirmation>
       </saml:Subject>
       ...
    

    Audience 与 SAML 断言的 Condition 元素相关联,它告诉在哪些安全条件或上下文下,断言是有效的,并提供与这种有效性相关的一些条款和条件(如断言的时间有效性,谁可以使用断言等)。通常,Audience 将使用 SP 的 EntityID。

       ...
       <saml:Conditions
         NotBefore="2004-12-05T09:17:05"
         NotOnOrAfter="2004-12-05T09:27:05">
         <saml:AudienceRestriction>
           <saml:Audience>https://sp.example.com/SAML2</saml:Audience>
         </saml:AudienceRestriction>
       </saml:Conditions>
       ...
    

    Audience 和 Receipt 是在 SAML 断言中为特定目的而布局的,不能盲目地认为它们都将具有相同的 SP URL 作为其值。此外,它还取决于 IdP 实现,并且 IdP 和 SP 协商以提出要在 SAML 断言的 Audience 和 Receipt 元素中使用的值。

    【讨论】: