Konfigurera registrering och inloggning med ett GitHub-konto med hjälp av Azure Active Directory B2C
Innan du börjar använder du väljaren Välj en principtyp för att välja den typ av princip som du konfigurerar. Azure Active Directory B2C erbjuder två metoder för att definiera hur användare interagerar med dina program: via fördefinierade användarflöden eller genom fullständigt konfigurerbara anpassade principer. De steg som krävs i den här artikeln skiljer sig åt för varje metod.
Kommentar
Den här funktionen är en allmänt tillgänglig förhandsversion.
Viktigt!
Från och med maj 2021 tillkännagav GitHub en ändring som påverkar din anpassade principfederation för Azure AD B2C. På grund av ändringen lägger du till <Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item>
metadata i din tekniska GitHub-profil. Mer information finns i Inaktuell API-autentisering via frågeparametrar.
Förutsättningar
- Skapa ett användarflöde så att användare kan registrera sig och logga in på ditt program.
- Registrera ett webbprogram.
Skapa ett GitHub OAuth-program
Om du vill aktivera inloggning med ett GitHub-konto i Azure Active Directory B2C (Azure AD B2C) måste du skapa ett program i GitHub Developer-portalen . Mer information finns i Skapa en OAuth-app. Om du inte redan har ett GitHub-konto kan du registrera dig på https://www.github.com/.
- Logga in på GitHub Developer med dina GitHub-autentiseringsuppgifter.
- Välj OAuth-appar och välj sedan Ny OAuth-app.
- Ange ett programnamn och webbadressen till startsidan.
- För url: en för auktoriseringsåteranrop anger du
https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp
. Om du använder en anpassad domän anger duhttps://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp
. Ersättyour-domain-name
med din anpassade domän ochyour-tenant-name
med namnet på din klientorganisation. Använd alla gemener när du anger ditt klientnamn även om klientorganisationen har definierats med versaler i Azure AD B2C. - Klicka på Registrera program.
- Kopiera värdena för klient-ID och klienthemlighet. Du behöver båda för att lägga till identitetsprovidern i klientorganisationen.
Konfigurera GitHub som en identitetsprovider
- Logga in på Azure Portal som global administratör för din Azure AD B2C-klientorganisationen.
- Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klient från menyn Kataloger + prenumerationer.
- Välj Alla tjänster på menyn högst upp till vänster i Azure-portalen och sök efter och välj Azure AD B2C.
- Välj Identitetsprovidrar och sedan GitHub (förhandsversion).
- Ange ett Namn. Till exempel GitHub.
- För klient-ID anger du klient-ID för GitHub-programmet som du skapade tidigare.
- För klienthemligheten anger du den klienthemlighet som du har registrerat.
- Välj Spara.
Lägga till GitHub-identitetsprovider i ett användarflöde
Nu har GitHub-identitetsprovidern konfigurerats, men den är ännu inte tillgänglig på någon av inloggningssidorna. Så här lägger du till GitHub-identitetsprovidern i ett användarflöde:
- I din Azure AD B2C-klient väljer du Användarflöden.
- Klicka på det användarflöde som du vill lägga till GitHub-identitetsprovidern.
- Under Sociala identitetsprovidrar väljer du GitHub.
- Välj Spara.
- Om du vill testa principen väljer du Kör användarflöde.
- För Program väljer du webbprogrammet med namnet testapp1 som du registrerade tidigare. Svars-URL :en ska visa
https://jwt.ms
. - Välj knappen Kör användarflöde.
- På registrerings- eller inloggningssidan väljer du GitHub för att logga in med GitHub-kontot.
Om inloggningsprocessen lyckas omdirigeras webbläsaren till https://jwt.ms
, som visar innehållet i token som returneras av Azure AD B2C.
Skapa en principnyckel
Du måste lagra klienthemligheten som du tidigare registrerade i din Azure AD B2C-klientorganisation.
- Logga in på Azure-portalen.
- Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klient från menyn Kataloger + prenumerationer.
- Välj Alla tjänster på menyn högst upp till vänster i Azure-portalen och sök efter och välj Azure AD B2C.
- På sidan Översikt väljer du Identity Experience Framework.
- Välj Principnycklar och välj sedan Lägg till.
- För Alternativ väljer du
Manual
. - Ange ett Namn för principnyckeln. Exempel:
GitHubSecret
PrefixetB2C_1A_
läggs automatiskt till i namnet på din nyckel. - I Hemlighet anger du din klienthemlighet som du tidigare har registrerat.
- För Nyckelanvändning väljer du
Signature
. - Klicka på Skapa.
Konfigurera GitHub som en identitetsprovider
För att göra det möjligt för användare att logga in med ett GitHub-konto måste du definiera kontot som en anspråksprovider som Azure AD B2C kan kommunicera med via en slutpunkt. Slutpunkten innehåller en uppsättning anspråk som används av Azure AD B2C för att verifiera att en viss användare har autentiserats.
Du kan definiera ett GitHub-konto som en anspråksprovider genom att lägga till det i elementet ClaimsProviders i tilläggsfilen för principen.
Öppna TrustFrameworkExtensions.xml.
Hitta elementet ClaimsProviders . Om den inte finns lägger du till den under rotelementet.
Lägg till en ny ClaimsProvider på följande sätt:
<ClaimsProvider> <Domain>github.com</Domain> <DisplayName>GitHub</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="GitHub-OAuth2"> <DisplayName>GitHub</DisplayName> <Protocol Name="OAuth2" /> <Metadata> <Item Key="ProviderName">github.com</Item> <Item Key="authorization_endpoint">https://github.com/login/oauth/authorize</Item> <Item Key="AccessTokenEndpoint">https://github.com/login/oauth/access_token</Item> <Item Key="ClaimsEndpoint">https://api.github.com/user</Item> <Item Key="HttpBinding">GET</Item> <Item Key="scope">read:user user:email</Item> <Item Key="UsePolicyInRedirectUri">0</Item> <Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item> <Item Key="UserAgentForClaimsExchange">CPIM-Basic/{tenant}/{policy}</Item> <!-- Update the Client ID below to the Application ID --> <Item Key="client_id">Your GitHub application ID</Item> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_GitHubSecret"/> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" /> <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" /> <OutputClaim ClaimTypeReferenceId="numericUserId" PartnerClaimType="id" /> <OutputClaim ClaimTypeReferenceId="issuerUserId" /> <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="github.com" AlwaysUseDefaultValue="true" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateIssuerUserId" /> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/> <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
Ange client_id till program-ID från programregistreringen.
Spara filen.
Lägg till anspråkstransformeringar
Den tekniska GitHub-profilen kräver att CreateIssuerUserId-anspråkstransformeringar läggs till i listan över ClaimsTransformations. Om du inte har definierat ett ClaimsTransformations-element i filen lägger du till de överordnade XML-elementen enligt nedan. Anspråkstransformeringar behöver också en ny anspråkstyp som har definierats med namnet numerisktUserId.
- Sök efter elementet BuildingBlocks . Om elementet inte finns lägger du till det.
- Leta upp elementet ClaimsSchema . Om elementet inte finns lägger du till det.
- Lägg till det numeriskaUserId-anspråket i elementet ClaimsSchema .
- Leta upp elementet ClaimsTransformations . Om elementet inte finns lägger du till det.
- Lägg till createIssuerUserId-anspråkstransformeringar till elementet ClaimsTransformations .
<BuildingBlocks>
<ClaimsSchema>
<ClaimType Id="numericUserId">
<DisplayName>Numeric user Identifier</DisplayName>
<DataType>long</DataType>
</ClaimType>
</ClaimsSchema>
<ClaimsTransformations>
<ClaimsTransformation Id="CreateIssuerUserId" TransformationMethod="ConvertNumberToStringClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="numericUserId" TransformationClaimType="inputClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="issuerUserId" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
</ClaimsTransformations>
</BuildingBlocks>
Lägga till en användarresa
I det här läget har identitetsprovidern konfigurerats, men den är ännu inte tillgänglig på någon av inloggningssidorna. Om du inte har en egen anpassad användarresa skapar du en dubblett av en befintlig mallanvändarresa, annars fortsätter du till nästa steg.
- Öppna filen TrustFrameworkBase.xml från startpaketet.
- Hitta och kopiera hela innehållet i elementet UserJourney som innehåller
Id="SignUpOrSignIn"
. - Öppna TrustFrameworkExtensions.xml och leta upp elementet UserJourneys. Om elementet inte finns lägger du till ett.
- Klistra in hela innehållet i elementet UserJourney som du kopierade som underordnat elementet UserJourneys .
- Byt namn på ID:t för användarresan. Exempel:
Id="CustomSignUpSignIn"
Lägga till identitetsprovidern i en användarresa
Nu när du har en användarresa lägger du till den nya identitetsprovidern i användarresan. Du lägger först till en inloggningsknapp och länkar sedan knappen till en åtgärd. Åtgärden är den tekniska profil som du skapade tidigare.
Leta reda på orkestreringsstegelementet som innehåller
Type="CombinedSignInAndSignUp"
, ellerType="ClaimsProviderSelection"
i användarresan. Det är vanligtvis det första orkestreringssteget. Elementet ClaimsProviderSelections innehåller en lista över identitetsprovidrar som en användare kan logga in med. Ordningen på elementen styr ordningen på de inloggningsknappar som visas för användaren. Lägg till ett ClaimsProviderSelection XML-element. Ange värdet för TargetClaimsExchangeId till ett eget namn.I nästa orkestreringssteg lägger du till ett ClaimsExchange-element . Ange ID:t till värdet för målanspråkets utbytes-ID. Uppdatera värdet för TechnicalProfileReferenceId till ID:t för den tekniska profil som du skapade tidigare.
Följande XML visar de två första orkestreringsstegen för en användarresa med identitetsprovidern:
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
...
<ClaimsProviderSelection TargetClaimsExchangeId="GitHubExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="GitHubExchange" TechnicalProfileReferenceId="GitHub-OAuth2" />
</ClaimsExchanges>
</OrchestrationStep>
Konfigurera principen för förlitande part
Principen för förlitande part, till exempel SignUpSignIn.xml, anger den användarresa som Azure AD B2C ska köra. Hitta elementet DefaultUserJourney i den förlitande parten. Uppdatera ReferenceId så att det matchar användarens rese-ID, där du lade till identitetsprovidern.
I följande exempel CustomSignUpSignIn
för användarresan är ReferenceId inställt på CustomSignUpSignIn
:
<RelyingParty>
<DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
...
</RelyingParty>
Ladda upp den anpassade principen
- Logga in på Azure-portalen.
- Välj ikonen Katalog + prenumeration i portalens verktygsfält och välj sedan den katalog som innehåller din Azure AD B2C-klientorganisation.
- I Azure-portalen söker du efter och väljer Azure AD B2C.
- Under Principer väljer du Identity Experience Framework.
- Välj Överför anpassad princip och ladda sedan upp de två principfilerna som du ändrade i följande ordning: tilläggsprincipen, till exempel
TrustFrameworkExtensions.xml
, och sedan den förlitande partprincipen, till exempelSignUpSignIn.xml
.
Testa din anpassade princip
- Välj din princip för förlitande part, till exempel
B2C_1A_signup_signin
. - För Program väljer du ett webbprogram som du registrerade tidigare. Svars-URL :en ska visa
https://jwt.ms
. - Välj knappen Kör nu.
- På registrerings- eller inloggningssidan väljer du GitHub för att logga in med GitHub-kontot.
Om inloggningsprocessen lyckas omdirigeras webbläsaren till https://jwt.ms
, som visar innehållet i token som returneras av Azure AD B2C.
Nästa steg
- Lär dig hur du skickar GitHub-token till ditt program.
- Kolla in Live-demonstrationen för GitHub-federationen och hur du skickar GitHub-åtkomsttoken Live demo