Skip to content

Commit a29a637

Browse files
vgrlmattpollardmyarb
authored
GitHub Enterprise Server 3.4 GA (github#25954)
Co-authored-by: Matt Pollard <[email protected]> Co-authored-by: Melanie Yarbrough <[email protected]>
1 parent c79c262 commit a29a637

File tree

11 files changed

+353
-33
lines changed

11 files changed

+353
-33
lines changed
65.7 KB
Loading
60.9 KB
Loading
5.06 KB
Loading
50.9 KB
Loading
17.7 KB
Loading
16.3 KB
Loading

content/admin/identity-and-access-management/authenticating-users-for-your-github-enterprise-server-instance/using-saml.md

Lines changed: 68 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ A mapping is created between the `NameID` and the {% data variables.product.prod
5454

5555
{% note %}
5656

57-
**Note**: If the `NameID` for a user does change on the IdP, the user will see an error message when they try to sign in to your {% data variables.product.prodname_ghe_server %} instance. {% ifversion ghes %}To restore the user's access, you'll need to update the user account's `NameID` mapping. For more information, see "[Updating a user's SAML `NameID`](#updating-a-users-saml-nameid)."{% else %} For more information, see "[Error: 'Another user already owns the account'](#error-another-user-already-owns-the-account)."{% endif %}
57+
**Note**: If the `NameID` for a user does change on the IdP, the user will see an error message when they try to sign into {% data variables.product.product_location %}. To restore the user's access, you'll need to update the user account's `NameID` mapping. For more information, see "[Updating a user's SAML `NameID`](#updating-a-users-saml-nameid)."
5858

5959
{% endnote %}
6060

@@ -96,6 +96,14 @@ To specify more than one value for an attribute, use multiple `<saml2:AttributeV
9696

9797
## Configuring SAML settings
9898

99+
You can enable or disable SAML authentication for {% data variables.product.product_location %}, or you can edit an existing configuration. You can view and edit authentication settings for {% data variables.product.product_name %} in the {% data variables.enterprise.management_console %}. For more information, see "[Accessing the management console](/admin/configuration/configuring-your-enterprise/accessing-the-management-console)."
100+
101+
{% note %}
102+
103+
**Note**: {% data reusables.enterprise.test-in-staging %}
104+
105+
{% endnote %}
106+
99107
{% data reusables.enterprise_site_admin_settings.access-settings %}
100108
{% data reusables.enterprise_site_admin_settings.management-console %}
101109
{% data reusables.enterprise_management_console.authentication %}
@@ -118,19 +126,11 @@ To specify more than one value for an attribute, use multiple `<saml2:AttributeV
118126
1. Select **Disable administrator demotion/promotion** if you **do not** want your SAML provider to determine administrator rights for users on {% data variables.product.product_location %}.
119127

120128
![Screenshot of option to enable option to respect the "administrator" attribute from the IdP to enable or disable administrative rights](/assets/images/enterprise/management-console/disable-admin-demotion-promotion.png)
121-
1. Optionally, to allow {% data variables.product.product_location %} to send and receive encrypted assertions to and from your SAML IdP, select **Require encrypted assertions**. For more information, see "[Enabling encrypted assertions](#enabling-encrypted-assertions)."
129+
{%- ifversion ghes > 3.3 %}
130+
1. Optionally, to allow {% data variables.product.product_location %} to receive encrypted assertions from your SAML IdP, select **Require encrypted assertions**. You must ensure that your IdP supports encrypted assertions and that the encryption and key transport methods in the management console match the values configured on your IdP. You must also provide {% data variables.product.product_location %}'s public certificate to your IdP. For more information, see "[Enabling encrypted assertions](#enabling-encrypted-assertions)."
122131

123132
![Screenshot of "Enable encrypted assertions" checkbox within management console's "Authentication" section](/assets/images/help/saml/management-console-enable-encrypted-assertions.png)
124-
125-
{% warning %}
126-
127-
**Warning**: Incorrectly configuring encrypted assertions can cause all authentication to {% data variables.product.product_location %} to fail.
128-
129-
- You must ensure that your IdP supports encrypted assertions and that the encryption and key transport methods in the management console match the values configured on your IdP. You must also provide {% data variables.product.product_location %}'s public certificate to your IdP. For more information, see "[Enabling encrypted assertions](#enabling-encrypted-assertions)."
130-
131-
- Before enabling encrypted assertions, {% data variables.product.company_short %} recommends testing encrypted assertions in a staging environment, and confirming that SAML authentication functions as you expect. For more information, see "[Setting up a staging instance](/admin/installation/setting-up-a-github-enterprise-server-instance/setting-up-a-staging-instance)."
132-
133-
{% endwarning %}
133+
{%- endif %}
134134
1. In the **Single sign-on URL** field, type the HTTP or HTTPS endpoint on your IdP for single sign-on requests. This value is provided by your IdP configuration. If the host is only available from your internal network, you may need to [configure {% data variables.product.product_location %} to use internal nameservers](/enterprise/{{ currentVersion }}/admin/guides/installation/configuring-dns-nameservers/).
135135

136136
![Screenshot of text field for single sign-on URL](/assets/images/enterprise/management-console/saml-single-sign-url.png)
@@ -153,37 +153,38 @@ To specify more than one value for an attribute, use multiple `<saml2:AttributeV
153153

154154
To enable encrypted assertions, your SAML IdP must also support encrypted assertions. You must provide {% data variables.product.product_location %}'s public certificate to your IdP, and configure encryption settings that match your IdP.
155155

156-
{% warning %}
157-
158-
**Warning**: Incorrectly configuring encrypted assertions can cause all authentication to {% data variables.product.product_location %} to fail. {% data variables.product.company_short %} strongly recommends testing your SAML configuration in a staging environment. For more information about staging instances, see "[Setting up a staging instance](/admin/installation/setting-up-a-github-enterprise-server-instance/setting-up-a-staging-instance)."
156+
{% note %}
159157

160-
{% endwarning %}
158+
**Note**: {% data reusables.enterprise.test-in-staging %}
161159

162-
1. Configure SAML for {% data variables.product.product_location %}. For more information, see "[Configuring SAML settings](#configuring-saml-settings)."
163-
{% data reusables.enterprise_installation.ssh-into-instance %}
164-
1. Run the following command to output {% data variables.product.product_location %}'s public certificate.
160+
{% endnote %}
165161

166-
openssl pkcs12 -in /data/user/common/saml-sp.p12 -nokeys -passin pass:
167-
1. In the output, copy the text beginning with `-----BEGIN CERTIFICATE-----` and ending with `-----END CERTIFICATE-----`, and paste the output into a plaintext file.
168-
1. Sign into your SAML IdP as an administrator.
169-
1. In the application for {% data variables.product.product_location %}, enable encrypted assertions.
170-
- Note the encryption method and key transport method.
171-
- Provide the public certificate from step 3.
162+
1. Optionally, enable SAML debugging. SAML debugging records verbose entries in {% data variables.product.product_name %}'s authentication log, and may help you troubleshoot failed authentication attempts. For more information, see "[Configuring SAML debugging](#configuring-saml-debugging)."
172163
{% data reusables.enterprise_site_admin_settings.access-settings %}
173164
{% data reusables.enterprise_site_admin_settings.management-console %}
174165
{% data reusables.enterprise_management_console.authentication %}
175166
1. Select **Require encrypted assertions**.
176167

177168
![Screenshot of "Enable encrypted assertions" checkbox within management console's "Authentication" section](/assets/images/help/saml/management-console-enable-encrypted-assertions.png)
178-
1. To the right of "Encryption Method", select the encryption method for your IdP from step 5.
169+
1. To the right of "Encryption Certificate", click **Download** to save a copy of {% data variables.product.product_location %}'s public certificate on your local machine.
170+
171+
![Screenshot of "Download" button for public certificate for encrypted assertions](/assets/images/help/saml/management-console-encrypted-assertions-download-certificate.png)
172+
1. Sign into your SAML IdP as an administrator.
173+
1. In the application for {% data variables.product.product_location %}, enable encrypted assertions.
174+
- Note the encryption method and key transport method.
175+
- Provide the public certificate you downloaded in step 7.
176+
1. Return to the management console on {% data variables.product.product_location %}.
177+
1. To the right of "Encryption Method", select the encryption method for your IdP from step 9.
179178

180179
![Screenshot of "Encryption Method" for encrypted assertions](/assets/images/help/saml/management-console-encrypted-assertions-encryption-method.png)
181-
1. To the right of "Key Transport Method", select the key transport method for your IdP from step 5.
180+
1. To the right of "Key Transport Method", select the key transport method for your IdP from step 9.
182181

183182
![Screenshot of "Key Transport Method" for encrypted assertions](/assets/images/help/saml/management-console-encrypted-assertions-key-transport-method.png)
184183
1. Click **Save settings**.
185184
{% data reusables.enterprise_site_admin_settings.wait-for-configuration-run %}
186185

186+
If you enabled SAML debugging to test authentication with encrypted assertions, disable SAML debugging when you're done testing. For more information, see "[Configuring SAML debugging](#configuring-saml-debugging)."
187+
187188
{% endif %}
188189

189190
## Updating a user's SAML `NameID`
@@ -245,11 +246,11 @@ When the user signs in again, {% data variables.product.prodname_ghe_server %} c
245246

246247
> Another user already owns the account. Please have your administrator check the authentication log.
247248
248-
The message typically indicates that the person's username or email address has changed on the IdP. {% ifversion ghes %}Ensure that the `NameID` mapping for the user account on {% data variables.product.prodname_ghe_server %} matches the user's `NameID` on your IdP. For more information, see "[Updating a user's SAML `NameID`](#updating-a-users-saml-nameid)."{% else %}For help updating the `NameID` mapping, contact {% data variables.contact.contact_ent_support %}.{% endif %}
249+
The message typically indicates that the person's username or email address has changed on the IdP. Ensure that the `NameID` mapping for the user account on {% data variables.product.prodname_ghe_server %} matches the user's `NameID` on your IdP. For more information, see "[Updating a user's SAML `NameID`](#updating-a-users-saml-nameid)."
249250

250251
### Error: Recipient in SAML response was blank or not valid
251252

252-
If the `Recipient` does not match the ACS URL for your {% data variables.product.prodname_ghe_server %} instance, one of the following two error messages will appear in the authentication log when a user attempts to authenticate.
253+
If the `Recipient` does not match the ACS URL for {% data variables.product.product_location %}, one of the following two error messages will appear in the authentication log when a user attempts to authenticate.
253254

254255
```
255256
Recipient in the SAML response must not be blank.
@@ -259,7 +260,7 @@ Recipient in the SAML response must not be blank.
259260
Recipient in the SAML response was not valid.
260261
```
261262

262-
Ensure that you set the value for `Recipient` on your IdP to the full ACS URL for your {% data variables.product.prodname_ghe_server %} instance. For example, `https://ghe.corp.example.com/saml/consume`.
263+
Ensure that you set the value for `Recipient` on your IdP to the full ACS URL for {% data variables.product.product_location %}. For example, `https://ghe.corp.example.com/saml/consume`.
263264

264265
### Error: "SAML Response is not signed or has been modified"
265266

@@ -279,4 +280,40 @@ If the IdP's response has a missing or incorrect value for `Audience`, the follo
279280
Audience is invalid. Audience attribute does not match https://<em>YOUR-INSTANCE-URL</em>
280281
```
281282

282-
Ensure that you set the value for `Audience` on your IdP to the `EntityId` for your {% data variables.product.prodname_ghe_server %} instance, which is the full URL to your {% data variables.product.prodname_ghe_server %} instance. For example, `https://ghe.corp.example.com`.
283+
Ensure that you set the value for `Audience` on your IdP to the `EntityId` for {% data variables.product.product_location %}, which is the full URL to {% data variables.product.product_location %}. For example, `https://ghe.corp.example.com`.
284+
285+
### Configuring SAML debugging
286+
287+
You can configure {% data variables.product.product_name %} to write verbose debug logs to _/var/log/github/auth.log_ for every SAML authentication attempt. You may be able to troubleshoot failed authentication attempts with this extra output.
288+
289+
{% warning %}
290+
291+
**Warnings**:
292+
293+
- Only enable SAML debugging temporarily, and disable debugging immediately after you finish troubleshooting. If you leave debugging enabled, the size of your log may increase much faster than usual, which can negatively impact the performance of {% data variables.product.product_name %}.
294+
- Test new authentication settings for {% data variables.product.product_location %} in a staging environment before you apply the settings in your production environment. For more information, see "[Setting up a staging instance](/admin/installation/setting-up-a-github-enterprise-server-instance/setting-up-a-staging-instance)."
295+
296+
{% endwarning %}
297+
298+
{% data reusables.enterprise-accounts.access-enterprise %}
299+
{% data reusables.enterprise-accounts.policies-tab %}
300+
{% data reusables.enterprise-accounts.options-tab %}
301+
1. Under "SAML debugging", select the drop-down and click **Enabled**.
302+
303+
![Screenshot of drop-down to enable SAML debugging](/assets/images/enterprise/site-admin-settings/site-admin-saml-debugging-enabled.png)
304+
305+
1. Attempt to sign into {% data variables.product.product_location %} through your SAML IdP.
306+
307+
1. Review the debug output in _/var/log/github/auth.log_ on {% data variables.product.product_location %}.
308+
309+
1. When you're done troubleshooting, select the drop-down and click **Disabled**.
310+
311+
![Screenshot of drop-down to disable SAML debugging](/assets/images/enterprise/site-admin-settings/site-admin-saml-debugging-disabled.png)
312+
313+
### Decoding responses in _auth.log_
314+
315+
Some output in _auth.log_ may be Base64-encoded. You can access the administrative shell and use the `base64` utility on {% data variables.product.product_location %} to decode these responses. For more information, see "[Accessing the administrative shell (SSH)](/admin/configuration/configuring-your-enterprise/accessing-the-administrative-shell-ssh)."
316+
317+
```shell
318+
$ base64 --decode <em>ENCODED OUTPUT</em>
319+
```

data/release-notes/enterprise-server/3-4/0-rc1.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
date: '2022-02-15'
22
release_candidate: true
3-
deprecated: false
3+
deprecated: true
44
intro: |
55
{% note %}
66

0 commit comments

Comments
 (0)