Share via


Definiera en teknisk profil för SAML-identitetsprovider i en anpassad azure Active Directory B2C-princip

Anteckning

I Azure Active Directory B2C är anpassade principer främst utformade för att hantera komplexa scenarier. I de flesta fall rekommenderar vi att du använder inbyggda användarflöden. Om du inte har gjort det kan du läsa mer om startpaketet för anpassade principer i Kom igång med anpassade principer i Active Directory B2C.

Azure Active Directory B2C (Azure AD B2C) har stöd för SAML 2.0-identitetsprovidern. Den här artikeln beskriver detaljerna i en teknisk profil för att interagera med en anspråksprovider som stöder det här standardiserade protokollet. Med en teknisk SAML-profil kan du federera med en SAML-baserad identitetsprovider, till exempel ADFS och Salesforce. Med den här federationen kan användarna logga in med sina befintliga sociala identiteter eller företagsidentiteter.

Metadatautbyte

Metadata är information som används i SAML-protokollet för att exponera konfigurationen av en SAML-part, till exempel en tjänstleverantör eller identitetsprovider. Metadata definierar platsen för tjänsterna, till exempel inloggning och utloggning, certifikat, inloggningsmetod med mera. Identitetsprovidern använder metadata för att veta hur de ska kommunicera med Azure AD B2C. Metadata konfigureras i XML-format och kan signeras med en digital signatur så att den andra parten kan verifiera metadataintegriteten. När Azure AD B2C federeras med en SAML-identitetsprovider fungerar den som en tjänstleverantör som initierar en SAML-begäran och väntar på ett SAML-svar. Och i vissa fall accepterar oönskad SAML-autentisering, som även kallas identitetsprovider initierad.

Metadata kan konfigureras i båda parter som "statiska metadata" eller "dynamiska metadata". I statiskt läge kopierar du hela metadata från en part och anger den i den andra parten. I dynamiskt läge anger du URL:en till metadata medan den andra parten läser konfigurationen dynamiskt. Principerna är desamma, du anger metadata för den tekniska Azure AD B2C-profilen i din identitetsprovider och anger metadata för identitetsprovidern i Azure AD B2C.

Varje SAML-identitetsprovider har olika steg för att exponera och ange tjänstleverantören, i det här fallet Azure AD B2C, och ange Azure AD B2C-metadata i identitetsprovidern. Titta på din identitetsproviders dokumentation för vägledning om hur du gör det.

I följande exempel visas en URL-adress till SAML-metadata för en teknisk Azure AD B2C-profil:

https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/your-policy/samlp/metadata?idptp=your-technical-profile

Ersätt följande värden:

  • ditt klientnamn med ditt klientnamn, till exempel fabrikam.b2clogin.com.
  • din-princip med ditt principnamn. Använd principen där du konfigurerar saml-providerns tekniska profil eller en princip som ärver från den principen.
  • din tekniska profil med namnet på saml-identitetsproviderns tekniska profil.

Utbyte av digitala signeringscertifikat

Om du vill skapa ett förtroende mellan Azure AD B2C och din SAML-identitetsprovider måste du ange ett giltigt X509-certifikat med den privata nyckeln. Du laddar upp certifikatet med den privata nyckeln (.pfx-filen) till Azure AD B2C-principnyckelarkiv. Azure AD B2C signerar SAML-inloggningsbegäran digitalt med det certifikat som du anger.

Certifikatet används på följande sätt:

  • Azure AD B2C genererar och signerar en SAML-begäran med hjälp av certifikatets privata Azure AD B2C-nyckel. SAML-begäran skickas till identitetsprovidern, som validerar begäran med hjälp av Azure AD offentliga B2C-nyckeln för certifikatet. Det offentliga Azure AD B2C-certifikatet är tillgängligt via tekniska profilmetadata. Du kan också ladda upp CER-filen manuellt till din SAML-identitetsprovider.
  • Identitetsprovidern signerar de data som skickas till Azure AD B2C med hjälp av identitetsproviderns privata nyckel för certifikatet. Azure AD B2C verifierar data med hjälp av identitetsproviderns offentliga certifikat. Varje identitetsprovider har olika steg för konfigurationen. I dokumentationen till din identitetsprovider finns vägledning om hur du gör det. I Azure AD B2C behöver din princip åtkomst till den offentliga certifikatnyckeln med hjälp av identitetsproviderns metadata.

Ett självsignerat certifikat är acceptabelt för de flesta scenarier. För produktionsmiljöer rekommenderar vi att du använder ett X509-certifikat som utfärdas av en certifikatutfärdare. Som beskrivs senare i det här dokumentet kan du även inaktivera SAML-signering på båda sidor för en icke-produktionsmiljö.

Följande diagram visar metadata och certifikatutbyte:

metadata och certifikatutbyte

Digital kryptering

För att kryptera SAML-svarspåståendet använder identitetsprovidern alltid en offentlig nyckel för ett krypteringscertifikat i en teknisk Azure AD B2C-profil. När Azure AD B2C behöver dekryptera data används den privata delen av krypteringscertifikatet.

Så här krypterar du SAML-svarspåståendet:

  1. Ladda upp ett giltigt X509-certifikat med den privata nyckeln (.pfx-filen) till Azure AD B2C-principnyckelarkiv.
  2. Lägg till ett CryptographicKey-element med en identifierare SamlAssertionDecryption för i den tekniska profilen CryptographicKeys-samlingen . Ange StorageReferenceId till namnet på den principnyckel som du skapade i steg 1.
  3. Ange metadata för den tekniska profilen WantsEncryptedAssertions till true.
  4. Uppdatera identitetsprovidern med de nya Azure AD tekniska B2C-profilmetadata. Du bör se KeyDescriptor med användningsegenskapen inställd på att encryption innehålla certifikatets offentliga nyckel.

I följande exempel visas avsnittet Nyckelbeskrivning för SAML-metadata som används för kryptering:

<KeyDescriptor use="encryption">
  <KeyInfo xmlns="https://www.w3.org/2000/09/xmldsig#">
    <X509Data>
      <X509Certificate>valid certificate</X509Certificate>
    </X509Data>
  </KeyInfo>
</KeyDescriptor>

Protokoll

Attributet Name för protocol-elementet måste anges till SAML2.

Inkommande anspråk

Elementet InputClaims används för att skicka ett NameId inom ämnet för SAML AuthN-begäran. För att uppnå detta lägger du till ett inkommande anspråk med en PartnerClaimType inställd på subject enligt nedan.

<InputClaims>
	<InputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="subject" />
</InputClaims>

Utdataanspråk

Elementet OutputClaims innehåller en lista över anspråk som returneras av SAML-identitetsprovidern AttributeStatement under avsnittet . Du kan behöva mappa namnet på anspråket som definierats i principen till det namn som definierats i identitetsprovidern. Du kan också inkludera anspråk som inte returneras av identitetsprovidern så länge du anger attributet DefaultValue .

Utdataanspråk för ämnesnamn

Om du vill läsa SAML-försäkran NameId i ämnesraden som ett normaliserat anspråk anger du anspråket PartnerClaimType till värdet för SPNameQualifier attributet. SPNameQualifierOm attributet inte visas anger du anspråket PartnerClaimType till värdet för attributetNameQualifier.

SAML-försäkran:

<saml:Subject>
  <saml:NameID SPNameQualifier="http://your-idp.com/unique-identifier" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">david@contoso.com</saml:NameID>
  <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
    <SubjectConfirmationData InResponseTo="_cd37c3f2-6875-4308-a9db-ce2cf187f4d1" NotOnOrAfter="2020-02-15T16:23:23.137Z" Recipient="https://your-tenant.b2clogin.com/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer" />
    </SubjectConfirmation>
  </saml:SubjectConfirmation>
</saml:Subject>

Utdataanspråk:

<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="http://your-idp.com/unique-identifier" />

Om båda SPNameQualifier attributen eller NameQualifier inte visas i SAML-försäkran anger du anspråket PartnerClaimType till assertionSubjectName. Kontrollera att NameId är det första värdet i xml-försäkran. När du definierar mer än en försäkran väljer Azure AD B2C ämnesvärdet från den senaste försäkran.

I följande exempel visas de anspråk som returneras av en SAML-identitetsprovider:

  • IssuerUserId-anspråket mappas till anspråket assertionSubjectName.
  • Det first_name anspråket mappas till givenName-anspråket .
  • Det last_name anspråket mappas till efternamnsanspråket.
  • DisplayName-anspråket mappas till namnanspråket.
  • E-postanspråket utan namnmappning.

Den tekniska profilen returnerar också anspråk som inte returneras av identitetsprovidern:

  • IdentityProvider-anspråket som innehåller namnet på identitetsprovidern.
  • AuthenticationSource-anspråket med standardvärdet socialIdpAuthentication.
<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="assertionSubjectName" />
  <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="first_name" />
  <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="last_name" />
  <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
  <OutputClaim ClaimTypeReferenceId="email"  />
  <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="contoso.com" />
  <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
</OutputClaims>

Elementet OutputClaimsTransformations kan innehålla en samling OutputClaimsTransformation-element som används för att ändra utdataanspråken eller generera nya.

Metadata

Attribut Krävs Beskrivning
PartnerEntity Yes URL för metadata för SAML-identitetsprovidern. Eller kopiera identitetsproviderns metadata och bädda in den i CDATA-elementet <![CDATA[Your IDP metadata]]>. Det rekommenderas inte att du bäddar in metadata för identitetsprovidern. Identitetsprovidern kan ändra inställningarna eller uppdatera certifikatet. Om identitetsproviderns metadata har ändrats hämtar du de nya metadata och uppdaterar principen med den nya.
WantsSignedRequests No Anger om den tekniska profilen kräver att alla utgående autentiseringsbegäranden signeras. Möjliga värden: true eller false. Standardvärdet är true. När värdet är inställt på truemåste den kryptografiska nyckeln SamlMessageSigning anges och alla utgående autentiseringsbegäranden signeras. Om värdet är inställt falsepå utelämnas parametrarna SigAlg och Signature (frågesträng eller postparameter) från begäran. Dessa metadata styr även attributet AuthnRequestsSigned för metadata, som är utdata i metadata för den tekniska Azure AD B2C-profil som delas med identitetsprovidern. Azure AD B2C signerar inte begäran om värdet för WantsSignedRequests i den tekniska profilens metadata har angetts till false och identitetsproviderns metadata WantAuthnRequestsSigned har angetts till false eller inte angetts.
XmlSignatureAlgorithm No Den metod som Azure AD B2C använder för att signera SAML-begäran. Dessa metadata styr värdet för Parametern SigAlg (frågesträng eller postparameter) i SAML-begäran. Möjliga värden: Sha256, Sha384, Sha512eller Sha1 (standard). Se till att du konfigurerar signaturalgoritmen på båda sidor med samma värde. Använd bara den algoritm som certifikatet stöder.
WantsSignedAssertions No Anger om den tekniska profilen kräver att alla inkommande intyg signeras. Möjliga värden: true eller false. Standardvärdet är true. Om värdet är inställt på truemåste alla kontrollavsnitt saml:Assertion som skickas av identitetsprovidern till Azure AD B2C signeras. Om värdet är inställt falsepå ska identitetsprovidern inte signera försäkran, men även om det gör det validerar Azure AD B2C inte signaturen. Dessa metadata styr också metadataflaggan WantsAssertionsSigned, som är utdata i metadata för den Azure AD tekniska B2C-profilen som delas med identitetsprovidern. Om du inaktiverar verifieringen av försäkran kanske du också vill inaktivera verifieringen av svarssignaturen (mer information finns i ResponsesSigned).
ResponsesSigned No Möjliga värden: true eller false. Standardvärdet är true. Om värdet är inställt falsepå ska identitetsprovidern inte signera SAML-svaret, men även om det gör det validerar Azure AD B2C inte signaturen. Om värdet är inställt truepå signeras SAML-svaret som skickas av identitetsprovidern till Azure AD B2C och måste verifieras. Om du inaktiverar SAML-svarsverifieringen kanske du också vill inaktivera verifieringen av kontrollsignaturen (mer information finns i WantsSignedAssertions).
WantsEncryptedAssertions No Anger om den tekniska profilen kräver att alla inkommande intyg krypteras. Möjliga värden: true eller false. Standardvärdet är false. Om värdet är inställt truepå måste intyg som skickas av identitetsprovidern till Azure AD B2C signeras och kryptografinyckeln SamlAssertionDecryption måste anges. Om värdet är inställt truepå innehåller metadata för den tekniska Azure AD B2C-profilen krypteringsavsnittet. Identitetsprovidern läser metadata och krypterar SAML-svarsför försäkran med den offentliga nyckeln som anges i metadata för den tekniska Azure AD B2C-profilen. Om du aktiverar kryptering av försäkran kan du också behöva inaktivera verifieringen av svarssignaturen (mer information finns i ResponsesSigned).
NameIdPolicyFormat No Anger begränsningar för den namnidentifierare som ska användas för att representera det begärda ämnet. Om detta utelämnas kan alla typer av identifierare som stöds av identitetsprovidern för det begärda ämnet användas. Till exempel urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified. NameIdPolicyFormat kan användas med NameIdPolicyAllowCreate. I din identitetsproviders dokumentation finns vägledning om vilka namn-ID-principer som stöds.
NameIdPolicyAllowCreate No När du använder NameIdPolicyFormat kan du också ange AllowCreate egenskapen nameIDPolicy. Värdet för dessa metadata är true eller false för att ange om identitetsprovidern får skapa ett nytt konto under inloggningsflödet. Titta på din identitetsproviders dokumentation för vägledning om hur du gör det.
AuthenticationRequestExtensions No Valfria protokollmeddelandetilläggselement som överenskommits mellan Azure AD B2C och identitetsprovidern. Tillägget visas i XML-format. Du lägger till XML-data i CDATA-elementet <![CDATA[Your IDP metadata]]>. Kontrollera identitetsproviderns dokumentation för att se om tilläggselementet stöds.
IncludeAuthnContextClassReferences No Anger en eller flera URI-referenser som identifierar kontextklasser för autentisering. Om du till exempel vill tillåta att en användare loggar in med användarnamn och lösenord anger du värdet till urn:oasis:names:tc:SAML:2.0:ac:classes:Password. Om du vill tillåta inloggning via användarnamn och lösenord över en skyddad session (SSL/TLS) anger du PasswordProtectedTransport. Titta i din identitetsproviders dokumentation för vägledning om de AuthnContextClassRef-URI :er som stöds. Ange flera URI:er som en kommaavgränsad lista.
IncludeKeyInfo No Anger om SAML-autentiseringsbegäran innehåller certifikatets offentliga nyckel när bindningen är inställd på HTTP-POST. Möjliga värden: true eller false.
IncludeClaimResolvingInClaimsHandling No För indata- och utdataanspråk anger om anspråksmatchning ingår i den tekniska profilen. Möjliga värden: true, eller false (standard). Om du vill använda en anspråksmatchare i den tekniska profilen anger du detta till true.
SingleLogoutEnabled No Anger om den tekniska profilen försöker logga ut från federerade identitetsprovidrar under inloggningen. Mer information finns i logga ut Azure AD B2C-session. Möjliga värden: true (standard) eller false.
ForceAuthN No Skickar ForceAuthN-värdet i SAML-autentiseringsbegäran för att avgöra om den externa SAML-IDP:en kommer att tvingas fråga användaren om autentisering. Som standard anger Azure AD B2C ForceAuthN-värdet till false vid den första inloggningen. Om sessionen sedan återställs (till exempel med hjälp prompt=login av i OIDC) ställs ForceAuthN-värdet in på true. Om du anger metadataobjektet enligt nedan framtvingas värdet för alla begäranden till den externa IDP:en. Möjliga värden: true eller false.
ProviderName No Skickar värdet ProviderName i SAML-autentiseringsbegäran.

Krypteringsnycklar

Elementet CryptographicKeys innehåller följande attribut:

Attribut Krävs Beskrivning
SamlMessageSigning Yes X509-certifikatet (RSA-nyckeluppsättning) som ska användas för att signera SAML-meddelanden. Azure AD B2C använder den här nyckeln för att signera begäranden och skicka dem till identitetsprovidern.
SamlAssertionDecryption Nej* X509-certifikatet (RSA-nyckeluppsättning). En SAML-identitetsprovider använder den offentliga delen av certifikatet för att kryptera försäkran om SAML-svaret. Azure AD B2C använder den privata delen av certifikatet för att dekryptera försäkran.

* Krävs om den externa IDP:n krypterar SAML-försäkran.
MetadataSignering No X509-certifikatet (RSA-nyckeluppsättningen) som ska användas för att signera SAML-metadata. Azure AD B2C använder den här nyckeln för att signera metadata.

Nästa steg

I följande artiklar finns exempel på hur du arbetar med SAML-identitetsprovidrar i Azure AD B2C: