|
| 1 | +--- |
| 2 | +title: 'Tutorial: Configure GitHub Enterprise Managed User (OIDC) for automatic user provisioning with Azure Active Directory | Microsoft Docs' |
| 3 | +description: Learn how to automatically provision and de-provision user accounts from Azure AD to GitHub Enterprise Managed User (OIDC). |
| 4 | +documentationcenter: '' |
| 5 | +author: twimmers |
| 6 | +writer: twimmers |
| 7 | +manager: beatrizd |
| 8 | + |
| 9 | +ms.assetid: e39cbad7-e23a-4986-9725-54a7aeb7b1ea |
| 10 | +ms.service: active-directory |
| 11 | +ms.subservice: saas-app-tutorial |
| 12 | +ms.workload: identity |
| 13 | +ms.tgt_pltfrm: na |
| 14 | +ms.topic: tutorial |
| 15 | +ms.date: 02/19/2022 |
| 16 | +ms.author: thwimmer |
| 17 | +--- |
| 18 | + |
| 19 | +# Tutorial: Configure GitHub Enterprise Managed User (OIDC) for automatic user provisioning |
| 20 | + |
| 21 | +This tutorial describes the steps you need to perform in both GitHub Enterprise Managed User (OIDC) and Azure Active Directory (Azure AD) to configure automatic user provisioning. When configured, Azure AD automatically provisions and de-provisions users and groups to GitHub Enterprise Managed User (OIDC) using the Azure AD Provisioning service. For important details on what this service does, how it works, and frequently asked questions, see [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](../app-provisioning/user-provisioning.md). |
| 22 | + |
| 23 | +> [!NOTE] |
| 24 | +> [GitHub Enterprise Managed User](https://docs.github.com/enterprise-cloud@latest/admin/authentication/managing-your-enterprise-users-with-your-identity-provider/about-enterprise-managed-users) is a feature of GitHub Enterprise Cloud which is different from GitHub Enterprise's standard OIDC SSO and user provisioning implementation. If you haven't specifically requested EMU instance, you have standard GitHub Enterprise Cloud plan. In that case, please refer to [the documentation](./github-provisioning-tutorial.md) to configure user provisioning in your non-EMU organisation. User provisioning is not supported for [GitHub Enteprise Accounts](https://docs.github.com/enterprise-cloud@latest/admin/overview/about-enterprise-accounts) |
| 25 | +
|
| 26 | +## Capabilities Supported |
| 27 | +> [!div class="checklist"] |
| 28 | +> * Create users in GitHub Enterprise Managed User (OIDC) |
| 29 | +> * Remove users in GitHub Enterprise Managed User (OIDC) when they do not require access anymore |
| 30 | +> * Keep user attributes synchronized between Azure AD and GitHub Enterprise Managed User (OIDC) |
| 31 | +> * Provision groups and group memberships in GitHub Enterprise Managed User (OIDC) |
| 32 | +> * [Single sign-on](../manage-apps/add-application-portal-setup-oidc-sso.md) to GitHub Enterprise Managed User (OIDC) (recommended). |
| 33 | +
|
| 34 | +> [!NOTE] |
| 35 | +> This provisioning connector is enabled only for Enterprise Managed Users beta participants. |
| 36 | +
|
| 37 | + |
| 38 | +## Prerequisites |
| 39 | + |
| 40 | +The scenario outlined in this tutorial assumes that you already have the following prerequisites: |
| 41 | + |
| 42 | +* [An Azure AD tenant](../develop/quickstart-create-new-tenant.md) |
| 43 | +* A user account in Azure AD with [permission](../roles/permissions-reference.md) to configure provisioning (for example, Application Administrator, Cloud Application administrator, Application Owner, or Global Administrator). |
| 44 | +* Enterprise Managed Users enabled GitHub Enterprise and configured to login with SAML SSO through your Azure AD tenant. |
| 45 | + |
| 46 | +> [!NOTE] |
| 47 | +> This integration is also available to use from Azure AD US Government Cloud environment. You can find this application in the Azure AD US Government Cloud Application Gallery and configure it in the same way as you do from public cloud. |
| 48 | +
|
| 49 | +## Step 1. Plan your provisioning deployment |
| 50 | +1. Learn about [how the provisioning service works](../app-provisioning/user-provisioning.md). |
| 51 | +2. Determine who will be in [scope for provisioning](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md). |
| 52 | +3. Determine what data to [map between Azure AD and GitHub Enterprise Managed User](../app-provisioning/customize-application-attributes.md). |
| 53 | + |
| 54 | +## Step 2. Configure GitHub Enterprise Managed User (OIDC) to support provisioning with Azure AD |
| 55 | + |
| 56 | +1. The Tenant URL is `https://api.github.com/scim/v2/enterprises/{enterprise}`. This value will be entered in the Tenant URL field in the Provisioning tab of your GitHub Enterprise Managed User (OIDC) application in the Azure portal. |
| 57 | + |
| 58 | +2. As a GitHub Enterprise Managed administrator navigate to the upper-right corner -> click your profile photo -> then click **Settings**. |
| 59 | + |
| 60 | +3. In the left sidebar, click **Developer settings**. |
| 61 | + |
| 62 | +4. In the left sidebar, click **Personal access tokens**. |
| 63 | + |
| 64 | +5. Click **Generate new token**. |
| 65 | + |
| 66 | +6. Select the **admin:enterprise** scope for this token. |
| 67 | + |
| 68 | +7. Click **Generate Token**. |
| 69 | + |
| 70 | +8. Copy and save the **secret token**. This value will be entered in the Secret Token field in the Provisioning tab of your GitHub Enterprise Managed User (OIDC) application in the Azure portal. |
| 71 | + |
| 72 | +## Step 3. Add GitHub Enterprise Managed User (OIDC) from the Azure AD application gallery |
| 73 | + |
| 74 | +Add GitHub Enterprise Managed User (OIDC) from the Azure AD application gallery to start managing provisioning to GitHub Enterprise Managed User (OIDC). If you have previously setup GitHub Enterprise Managed User (OIDC) for SSO, you can use the same application. However it is recommended that you create a separate app when testing out the integration initially. Learn more about adding an application from the gallery [here](../manage-apps/add-application-portal.md). |
| 75 | + |
| 76 | +## Step 4. Define who will be in scope for provisioning |
| 77 | + |
| 78 | +The Azure AD provisioning service allows you to scope who will be provisioned based on assignment to the application and or based on attributes of the user / group. If you choose to scope who will be provisioned to your app based on assignment, you can use the following [steps](../manage-apps/assign-user-or-group-access-portal.md) to assign users and groups to the application. If you choose to scope who will be provisioned based solely on attributes of the user or group, you can use a scoping filter as described [here](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md). |
| 79 | + |
| 80 | +* When assigning users and groups to GitHub Enterprise Managed User (OIDC), you must select a role other than **Default Access**. Users with the Default Access role are excluded from provisioning and will be marked as not effectively entitled in the provisioning logs. |
| 81 | + |
| 82 | +* Start small. Test with a small set of users and groups before rolling out to everyone. When scope for provisioning is set to assigned users and groups, you can control this by assigning one or two users or groups to the app. When scope is set to all users and groups, you can specify an [attribute based scoping filter](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md). |
| 83 | + |
| 84 | + |
| 85 | +## Step 5. Configure automatic user provisioning to GitHub Enterprise Managed User (OIDC) |
| 86 | + |
| 87 | +This section guides you through the steps to configure the Azure AD provisioning service to create, update, and disable users and/or groups in TestApp based on user and/or group assignments in Azure AD. |
| 88 | + |
| 89 | +### To configure automatic user provisioning for GitHub Enterprise Managed User (OIDC) in Azure AD: |
| 90 | + |
| 91 | +1. Sign in to the [Azure portal](https://portal.azure.com). Select **Enterprise Applications**, then select **All applications**. |
| 92 | + |
| 93 | +  |
| 94 | + |
| 95 | +2. In the applications list, select **GitHub Enterprise Managed User (OIDC)**. |
| 96 | + |
| 97 | +  |
| 98 | + |
| 99 | +3. Select the **Provisioning** tab. |
| 100 | + |
| 101 | +  |
| 102 | + |
| 103 | +4. Set the **Provisioning Mode** to **Automatic**. |
| 104 | + |
| 105 | +  |
| 106 | + |
| 107 | +5. Under the **Admin Credentials** section, input your GitHub Enterprise Managed User (OIDC) Tenant URL and Secret Token. Click **Test Connection** to ensure Azure AD can connect to GitHub Enterprise Managed User (OIDC). If the connection fails, ensure your GitHub Enterprise Managed User (OIDC) account has created the secret token as an enterprise owner and try again. |
| 108 | + |
| 109 | +  |
| 110 | + |
| 111 | +6. In the **Notification Email** field, enter the email address of a person or group who should receive the provisioning error notifications and select the **Send an email notification when a failure occurs** check box. |
| 112 | + |
| 113 | +  |
| 114 | + |
| 115 | +7. Select **Save**. |
| 116 | + |
| 117 | +8. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to GitHub Enterprise Managed User (OIDC)**. |
| 118 | + |
| 119 | +9. Review the user attributes that are synchronized from Azure AD to GitHub Enterprise Managed User (OIDC) in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in GitHub Enterprise Managed User (OIDC) for update operations. If you choose to change the [matching target attribute](../app-provisioning/customize-application-attributes.md), you will need to ensure that the GitHub Enterprise Managed User (OIDC) API supports filtering users based on that attribute. Select the **Save** button to commit any changes. |
| 120 | + |
| 121 | + |Attribute|Type|Supported For Filtering| |
| 122 | + |---|---|---| |
| 123 | + |externalId|String|✓| |
| 124 | + |userName|String| |
| 125 | + |active|Boolean| |
| 126 | + |roles|String| |
| 127 | + |displayName|String| |
| 128 | + |name.givenName|String| |
| 129 | + |name.familyName|String| |
| 130 | + |name.formatted|String| |
| 131 | + |emails[type eq "work"].value|String| |
| 132 | + |emails[type eq "home"].value|String| |
| 133 | + |emails[type eq "other"].value|String| |
| 134 | + |
| 135 | +10. Under the **Mappings** section, select **Synchronize Azure Active Directory Groups to GitHub Enterprise Managed User (OIDC)**. |
| 136 | + |
| 137 | +11. Review the group attributes that are synchronized from Azure AD to GitHub Enterprise Managed User (OIDC) in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the groups in GitHub Enterprise Managed User (OIDC) for update operations. Select the **Save** button to commit any changes. |
| 138 | + |
| 139 | + |Attribute|Type|Supported For Filtering| |
| 140 | + |---|---|---| |
| 141 | + |externalId|String|✓| |
| 142 | + |displayName|String| |
| 143 | + |members|Reference| |
| 144 | + |
| 145 | +12. To configure scoping filters, refer to the following instructions provided in the [Scoping filter tutorial](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md). |
| 146 | + |
| 147 | +13. To enable the Azure AD provisioning service for GitHub Enterprise Managed User (OIDC), change the **Provisioning Status** to **On** in the **Settings** section. |
| 148 | + |
| 149 | +  |
| 150 | + |
| 151 | +14. Define the users and/or groups that you would like to provision to GitHub Enterprise Managed User (OIDC) by choosing the desired values in **Scope** in the **Settings** section. |
| 152 | + |
| 153 | +  |
| 154 | + |
| 155 | +15. When you are ready to provision, click **Save**. |
| 156 | + |
| 157 | +  |
| 158 | + |
| 159 | +This operation starts the initial synchronization cycle of all users and groups defined in **Scope** in the **Settings** section. The initial cycle takes longer to perform than subsequent cycles, which occur approximately every 40 minutes as long as the Azure AD provisioning service is running. |
| 160 | + |
| 161 | +## Step 6. Monitor your deployment |
| 162 | +Once you've configured provisioning, use the following resources to monitor your deployment: |
| 163 | + |
| 164 | +1. Use the [provisioning logs](../reports-monitoring/concept-provisioning-logs.md) to determine which users have been provisioned successfully or unsuccessfully |
| 165 | +2. Check the [progress bar](../app-provisioning/application-provisioning-when-will-provisioning-finish-specific-user.md) to see the status of the provisioning cycle and how close it is to completion |
| 166 | +3. If the provisioning configuration seems to be in an unhealthy state, the application will go into quarantine. Learn more about quarantine states [here](../app-provisioning/application-provisioning-quarantine-status.md). |
| 167 | + |
| 168 | +## Additional resources |
| 169 | + |
| 170 | +* [Managing user account provisioning for Enterprise Apps](../app-provisioning/configure-automatic-user-provisioning-portal.md) |
| 171 | +* [What is application access and single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md) |
| 172 | + |
| 173 | +## Next steps |
| 174 | + |
| 175 | +* [Learn how to review logs and get reports on provisioning activity](../app-provisioning/check-status-user-account-provisioning.md) |
0 commit comments