Proposed Pull Request Change

title titleSuffix description author manager ms.service ms.topic ms.date ms.author ms.subservice zone_pivot_groups
Add AD FS as an OpenID Connect identity provider by using custom policies Azure AD B2C Set up AD FS 2016 using the OpenID Connect protocol and custom policies in Azure Active Directory B2C garrodonnell CelesteDG azure-active-directory how-to 01/24/2025 godonnell b2c b2c-policy-type
📄 Document Links
GitHub View on GitHub Microsoft Learn View on Microsoft Learn
Raw New Markdown
Generating updated version of doc...
Rendered New Markdown
Generating updated version of doc...
+0 -0
+0 -0
--- title: Add AD FS as an OpenID Connect identity provider by using custom policies titleSuffix: Azure AD B2C description: Set up AD FS 2016 using the OpenID Connect protocol and custom policies in Azure Active Directory B2C author: garrodonnell manager: CelesteDG ms.service: azure-active-directory ms.topic: how-to ms.date: 01/24/2025 ms.author: godonnell ms.subservice: b2c zone_pivot_groups: b2c-policy-type #Customer Intent: As a developer integrating Azure AD B2C with AD FS, I want to configure AD FS as an OpenID Connect identity provider, so that users can sign in with their AD FS accounts in Azure AD B2C. --- # Add AD FS as an OpenID Connect identity provider using custom policies in Azure Active Directory B2C [!INCLUDE [active-directory-b2c-end-of-sale-notice-b](../../includes/active-directory-b2c-end-of-sale-notice-b.md)] [!INCLUDE [active-directory-b2c-choose-user-flow-or-custom-policy](../../includes/active-directory-b2c-choose-user-flow-or-custom-policy.md)] ## Prerequisites [!INCLUDE [active-directory-b2c-customization-prerequisites](../../includes/active-directory-b2c-customization-prerequisites.md)] ## Create an AD FS application To enable sign-in for users with an AD FS account in Azure Active Directory B2C (Azure AD B2C), create an Application Group in your AD FS. For more information, see [Build a web application using OpenID Connect with AD FS 2016 and later](../active-directory/develop/msal-migration.md) To create an Application Group, follow these steps: 1. In **Server Manager**, select **Tools**, and then select **AD FS Management**. 1. In AD FS Management, right-click on **Application Groups** and select **Add Application Group**. 1. On the Application Group Wizard **Welcome** screen: 1. Enter the **Name** of your application. For example, *Azure AD B2C application*. 1. Under **Client-Server applications**, select the **Web browser accessing a web application** template. 1. Select **Next**. 1. On the Application Group Wizard **Native Application** screen: 1. Copy the **Client Identifier** value. The client identifier is your AD FS **Application ID**. You will need the application ID later in this article. 1. In **Redirect URI**, enter `https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp`, and then **Add**. If you use a [custom domain](custom-domain.md), enter `https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp`. Replace `your-tenant-name` with the name of your tenant, and `your-domain-name` with your custom domain. 1. Select **Next**, and then **Next**, and then **Next** again to complete the app registration wizard. 1. Select **Close**. ### Configure the app claims In this step, configure the claims AD FS application returns to Azure AD B2C. 1. In the **Application Groups**, select the application your created. 1. In the application properties window, under the **Applications**, select the **Web Application**. Then select **Edit**. :::image type="content" source="./media/identity-provider-adfs/ad-fs-edit-app.png" alt-text="Screenshot that shows how to edit a web application."::: 1. Select the **Issuance Transformation Rules** tab. Then select **Add Rule**. 1. In **Claim rule template**, select **Send LDAP attributes as claims**, and then **Next**. 1. Provide a **Claim rule name**. For the **Attribute store**, select **Active Directory**, add the following claims. | LDAP attribute | Outgoing claim type | | -------------- | ------------------- | | User-Principal-Name | upn | | Surname | family_name | | Given-Name | given_name | | Display-Name | name | Note some of the names will not display in the outgoing claim type dropdown. You need to manually type them in (the dropdown is editable). 1. Select **Finish**. 1. Select **Apply**, and then **OK**. 1. Select **OK** again to finish. ::: zone pivot="b2c-user-flow" ## Configure AD FS as an identity provider 1. Sign in to the [Azure portal](https://portal.azure.com/) with an account that has at least [External Identity Provider Administrator](/entra/identity/role-based-access-control/permissions-reference#external-identity-provider-administrator) privileges. 1. If you have access to multiple tenants, select the **Settings** icon in the top menu to switch to your Azure AD B2C tenant from the **Directories + subscriptions** menu. 1. Choose **All services** in the top-left corner of the Azure portal, and then search for and select **Azure AD B2C**. 1. Select **Identity providers**, and then select **New OpenID Connect provider**. 1. Enter a **Name**. For example, *Contoso*. 1. For **Metadata url**, enter the URL of the [AD FS OpenID Connect Configuration document](/windows-server/identity/ad-fs/development/ad-fs-openid-connect-oauth-concepts#ad-fs-endpoints). For example: ```http https://adfs.contoso.com/adfs/.well-known/openid-configuration ``` 1. For **Client ID**, enter the application ID that you previously recorded. 1. For the **Scope**, enter the `openid`. 1. For **Response type**, select **id_token**. So, the **Client secret** value isn't needed. Learn more about use of [Client ID and secret](identity-provider-generic-openid-connect.md#client-id-and-secret) when adding a generic OpenID Connect identity provider. 1. (Optional) For the **Domain hint**, enter `contoso.com`. For more information, see [Set up direct sign-in using Azure Active Directory B2C](direct-signin.md#redirect-sign-in-to-a-social-provider). 1. Under **Identity provider claims mapping**, select the following claims: - **User ID**: `upn` - **Display name**: `unique_name` - **Given name**: `given_name` - **Surname**: `family_name` 1. Select **Save**. ## Add AD FS identity provider to a user flow At this point, the AD FS (Contoso) identity provider has been set up, but it's not yet available in any of the sign-in pages. To add the AD FS identity provider to a user flow: 1. In your Azure AD B2C tenant, select **User flows**. 1. Select the user flow that you want to add the AD FS identity provider (Contoso). 1. Under the **Social identity providers**, select **Contoso**. 1. Select **Save**. 1. To test your policy, select **Run user flow**. 1. For **Application**, select the web application named *testapp1* that you previously registered. The **Reply URL** should show `https://jwt.ms`. 1. Select the **Run user flow** button. 1. From the sign-up or sign-in page, select **Contoso** to sign in with the Contoso account. If the sign-in process is successful, your browser is redirected to `https://jwt.ms`, which displays the contents of the token returned by Azure AD B2C. ::: zone-end ::: zone pivot="b2c-custom-policy" ## Configure AD FS as an identity provider To enable users to sign in using an AD FS account, you need to define the AD FS as a claims provider that Azure AD B2C can communicate with through an endpoint. 1. Open the *TrustFrameworkExtensions.xml*. 2. Find the **ClaimsProviders** element. If it does not exist, add it under the root element. 3. Add a new **ClaimsProvider** as follows: ```xml <ClaimsProvider> <Domain>contoso.com</Domain> <DisplayName>Contoso</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="Contoso-OpenIdConnect"> <DisplayName>Contoso</DisplayName> <Protocol Name="OpenIdConnect" /> <Metadata> <Item Key="METADATA">https://your-adfs-domain/adfs/.well-known/openid-configuration</Item> <Item Key="response_types">id_token</Item> <Item Key="response_mode">form_post</Item> <Item Key="scope">openid</Item> <Item Key="HttpBinding">POST</Item> <Item Key="UsePolicyInRedirectUri">0</Item> <!-- Update the Client ID below to the Application ID --> <Item Key="client_id">Your AD FS application ID</Item> </Metadata> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="upn" /> <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" /> <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name" /> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="unique_name" /> <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" /> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" /> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" /> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider> ``` 4. For the **Metadata url**, enter the URL of the [AD FS OpenID Connect Configuration document](/windows-server/identity/ad-fs/development/ad-fs-openid-connect-oauth-concepts#ad-fs-endpoints). For example: ``` https://adfs.contoso.com/adfs/.well-known/openid-configuration ``` 5. Set **client_id** to the application ID from the application registration. 6. Save the file. [!INCLUDE [active-directory-b2c-add-identity-provider-to-user-journey](../../includes/active-directory-b2c-add-identity-provider-to-user-journey.md)] ```xml <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin"> <ClaimsProviderSelections> ... <ClaimsProviderSelection TargetClaimsExchangeId="ContosoExchange" /> </ClaimsProviderSelections> ... </OrchestrationStep> <OrchestrationStep Order="2" Type="ClaimsExchange"> ... <ClaimsExchanges> <ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="Contoso-OpenIdConnect" /> </ClaimsExchanges> </OrchestrationStep> ``` [!INCLUDE [active-directory-b2c-configure-relying-party-policy](../../includes/active-directory-b2c-configure-relying-party-policy-user-journey.md)] ## Test your custom policy 1. Select your relying party policy, for example `B2C_1A_signup_signin`. 1. For **Application**, select a web application that you [previously registered](tutorial-register-applications.md). The **Reply URL** should show `https://jwt.ms`. 1. Select the **Run now** button. 1. From the sign-up or sign-in page, select **Contoso** to sign in with Contoso account. If the sign-in process is successful, your browser is redirected to `https://jwt.ms`, which displays the contents of the token returned by Azure AD B2C. ::: zone-end ## Next steps Learn how to [pass AD-FS token to your application](idp-pass-through-user-flow.md).
Success! Branch created successfully. Create Pull Request on GitHub
Error: