1

我正在尝试使用 Azure B2C 的身份框架体验将 IdP 发起的 SAML SSO 实施到服务提供商中。服务提供者要求身份提供者的元数据将NameIDFormat元素IDPSSODescriptor设置为urn:oasis:names:tc:SAML:2.0:nameid-format:transient

我遇到的问题是 IEF 似乎不支持配置NameIDFormat. 似乎 IEF 产生的元数据只支持persistent

我正在使用的政策如下所示。它直接仿照微软关于在 IEF 中实施 SAML SSO 策略的文档。

我试图通过设置此处记录NameIDFormat的 IEFNameIdPolicyFormat参数来配置,但没有成功。

我还尝试设置SubjectNamingInfo一个“瞬态-y”声明(即随机生成的、短暂的)。我创建了一个生成随机 GUID 声明的声明转换器,并希望 IEF 会注意到它是随机生成的并进行NameIdFormat相应设置。

关于如何将 IDP 的元数据设置为的任何NameIdFormat建议urn:oasis:names:tc:SAML:2.0:nameid-format:transient

IEF SSO 政策

<TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0" TenantId="acmecorp.onmicrosoft.com" PolicyId="B2C_1A_signup_signin_saml" PublicPolicyUri="http://acmecorp.onmicrosoft.com/B2C_1A_signup_signin_saml" DeploymentMode="Development" UserJourneyRecorderEndpoint="urn:journeyrecorder:applicationinsights" TenantObjectId="...">
  <BasePolicy>
    <TenantId>acmecorp.onmicrosoft.com</TenantId>
    <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
  </BasePolicy>
  <UserJourneys>
    <UserJourney Id="SignUpOrSignIn">
      <OrchestrationSteps>
        <OrchestrationStep Order="7" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="Saml2AssertionIssuerEncrypted" />
      </OrchestrationSteps>
    </UserJourney>
  </UserJourneys>
  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
    <UserJourneyBehaviors>
      <SingleSignOn Scope="Application" />
      <SessionExpiryType>Absolute</SessionExpiryType>
      <SessionExpiryInSeconds>86400</SessionExpiryInSeconds>
    </UserJourneyBehaviors>
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="SAML2" />
      <Metadata>
        <Item Key="IdpInitiatedProfileEnabled">true</Item>
        <Item Key="NameIdPolicyFormat">urn:oasis:names:tc:SAML:2.0:nameid-format:transient</Item>
        <Item Key="WantsEncryptedAssertions">true</Item>
        <Item Key="PartnerEntity"><![CDATA[
            <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://the-sp.com" ID="...">
              <md:SPSSODescriptor ID="..." protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol" AuthnRequestsSigned="true" WantAssertionsSigned="true">
                <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:transient</md:NameIDFormat>
                <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://the-sp.com/sso-endpoint" index="1" isDefault="true"/>
              </md:SPSSODescriptor>
            </md:EntityDescriptor>
              ]]></Item>
      </Metadata>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" PartnerClaimType="UID" DefaultValue="never@never.com" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="UID" />
    </TechnicalProfile>
  </RelyingParty>
</TrustFrameworkPolicy>
4

0 回答 0