Настройка проверки подлинности OIDC в SharePoint Server с помощью служб федерации Active Directory (AD FS)
ОБЛАСТЬ ПРИМЕНЕНИЯ:2013 2016 2019 Subscription Edition SharePoint в Microsoft 365
Предварительные условия
При настройке SharePoint Server с помощью службы федерации Active Directory (AD FS) (AD FS) с помощью проверки подлинности OpenID Connect (OIDC) для настройки вам потребуются следующие ресурсы:
- Ферма SharePoint Server по подписке.
- AD FS в Windows Server 2016 или более поздней версии, уже созданных, с открытым ключом сертификата подписи AD FS, экспортированным в
.cer
файл.
В этой статье используются следующие примеры значений для настройки AD FS OIDC:
Значение | Ссылка |
---|---|
URL-адрес сайта SharePoint | https://spsites.contoso.local/ |
URL-адрес сайта AD FS | https://adfs.contoso.local/adfs/ |
Конечная точка проверки подлинности AD FS | https://adfs.contoso.local/adfs/oauth2/authorize |
URL-адрес RegisteredIssuerName | https://adfs.contoso.local/adfs/ |
AD FS SignoutURL | https://adfs.contoso.local/adfs/oauth2/logout |
Тип утверждения удостоверения | http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress |
Администратор семейства веб-сайтов Windows | contoso\yvand |
Email значение администратора федеративного семейства веб-сайтов (AD FS) | yvand@contoso.local |
Шаг 1. Настройка поставщика удостоверений
Чтобы настроить OIDC с AD FS, выполните следующие действия:
В разделе Управление AD FS щелкните правой кнопкой мыши Группы приложения и выберите Добавить группу приложений.
Перейдите на страницу Приветствие , введите ADFSSSO в поле Имя и в разделе Клиент-серверные приложения выберите веб-браузер, который обращается к шаблону веб-приложения . Затем выберите Далее.
Перейдите на страницу Собственное приложение и скопируйте значение идентификатора клиента . Он будет использоваться позже в качестве значения параметра во
DefaultClientIdentifier
время настройки SharePoint.В поле URL-адрес перенаправления введите
https://spsites.contoso.local/
и нажмите кнопку Добавить. Затем выберите Далее.Перейдите на страницу Сводка и нажмите кнопку Далее.
Перейдите на страницу Завершено и нажмите кнопку Закрыть.
Экспорт сертификата подписи маркера из AD FS. Этот сертификат для подписи маркера будет использоваться в настройке SharePoint. На следующих изображениях показано, как экспортировать сертификат подписи маркеров из AD FS:
Убедитесь, что требуемый идентификатор утверждения включен в
id_token
из AD FS. Рассмотрим электронную почту в качестве примера:Предполагается, что служба AD FS настроила правило, которое считывает утверждение идентификатора из хранилища атрибутов, например AD. Выполните следующие действия, чтобы создать правило преобразования выдачи для этого конкретного веб-приложения, созданного ранее в AD FS:
Откройте созданное веб-приложение и перейдите на вкладку Правило преобразования проблем .
Выберите Добавить правило и выберите Отправить атрибуты LDAP в качестве утверждений в списке параметров.
Присвойте правилу утверждений имя AD и выберите Active Directory в раскрывающемся меню Хранилище атрибутов . Создайте два сопоставления с помощью раскрывающихся списков, как показано ниже:
Атрибут Значение Адреса электронной почты Адрес электронной почты Token-Groups — определяется доменным именем Role Нажмите кнопку Готово , чтобы закрыть мастер правил, и нажмите кнопку ОК , чтобы закрыть свойства веб-приложения. Нажмите кнопку ОК еще раз, чтобы завершить правило.
Если вы задаете OIDC с SharePoint Server, утверждение nbf должно быть настроено на стороне сервера AD FS в созданном веб-приложении. Если утверждение nbf не существует в этом веб-приложении, выполните следующие действия, чтобы создать его:
Откройте созданное веб-приложение и перейдите на вкладку Правило преобразования проблем .
Выберите Добавить правило , а затем — Применить. В мастере добавления правила утверждений преобразования выберите Отправить утверждения с помощью настраиваемого правила из параметров шаблона правила утверждений .
Нажмите кнопку Далее и введите следующую строку в поле Настраиваемое правило :
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"] => issue(Type = "nbf", Value = "0");
Нажмите Готово.
Шаг 2. Изменение свойств фермы SharePoint
На этом шаге необходимо изменить свойства фермы SharePoint Server в зависимости от версии фермы SharePoint Server.
- Дополнительные сведения о настройке свойств фермы SharePoint для SharePoint Server по подписке версии 24H1 см. в разделе Настройка SPSE версии 24H1 или более поздней версии.
- Дополнительные сведения о настройке свойств фермы SharePoint для SharePoint Server по подписке версии до 24H1 см. в разделе Настройка SPSE до версии 24H1.
Настройка SharePoint Server по подписке версии 24H1 или более поздних версий с помощью функции раннего выпуска
Начиная с SharePoint Server по подписке версии 24H1 (март 2024 г.), если ферма SharePoint настроена для настройки функции раннего выпуска, можно настроить свойства фермы SharePoint Server, используя управление сертификатами SharePoint для управления сертификатами nonce. Сертификат cookie nonce является частью инфраструктуры для обеспечения безопасности маркеров проверки подлинности OIDC. Выполните следующий скрипт PowerShell, чтобы настроить:
Важно!
Чтобы использовать этот скрипт, ферма SharePoint должна иметь значение Ранний выпуск, как указано выше. Если это не так, скрипт завершится без ошибок, но вызов $farm. UpdateNonceCertificate() ничего не сделает. Если вы не хотите настраивать ферму для раннего выпуска, следует использовать действия Настройка SPSE до версии 24H1 .
Примечание.
Запустите командную консоль SharePoint от имени администратора фермы, чтобы запустить следующий скрипт. Внимательно прочитайте инструкции, описанные в следующем сценарии PowerShell. Вам потребуется ввести собственные значения среды в определенных местах.
# Set up farm properties to work with OIDC
# Create the Nonce certificate
$cert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -Provider 'Microsoft Enhanced RSA and AES Cryptographic Provider' -Subject "CN=SharePoint Cookie Cert"
# Import certificate to Certificate Management
$certPath = "<path and file name to save the exported cert. ex: c:\certs\nonce.pfx>"
$certPassword = ConvertTo-SecureString -String "<password>" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath $certPath -Password $certPassword
$nonceCert = Import-SPCertificate -Path $certPath -Password $certPassword -Store "EndEntity" -Exportable:$true
# Update farm property
$farm = Get-SPFarm
$farm.UpdateNonceCertificate($nonceCert,$true)
Настройка SharePoint Server по подписке до версии 24H1
# Set up farm properties to work with OIDC
$cert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -Provider 'Microsoft Enhanced RSA and AES Cryptographic Provider' -Subject "CN=SharePoint Cookie Cert"
$rsaCert = [System.Security.Cryptography.X509Certificates.RSACertificateExtensions]::GetRSAPrivateKey($cert)
$fileName = $rsaCert.key.UniqueName
# If you have multiple SharePoint servers in the farm, you need to export the certificate by Export-PfxCertificate and import the certificate to all other SharePoint servers in the farm by Import-PfxCertificate.
# After the certificate is successfully imported to SharePoint Server, we will need to grant access permission to the certificate's private key.
$path = "$env:ALLUSERSPROFILE\Microsoft\Crypto\RSA\MachineKeys\$fileName"
$permissions = Get-Acl -Path $path
# Replace the <web application pool account> with the real application pool account of your web application
$access_rule = New-Object System.Security.AccessControl.FileSystemAccessRule(<Web application pool account>, 'Read', 'None', 'None', 'Allow')
$permissions.AddAccessRule($access_rule)
Set-Acl -Path $path -AclObject $permissions
# Update farm properties
$farm = Get-SPFarm
$farm.Properties['SP-NonceCookieCertificateThumbprint']=$cert.Thumbprint
$farm.Properties['SP-NonceCookieHMACSecretKey']='seed'
$farm.Update()
Шаг 3. Настройка SharePoint для доверия поставщикам удостоверений
На этом шаге вы создадите SPTrustedTokenIssuer
объект , который будет хранить конфигурацию, необходимую SharePoint для доверия AD FS в качестве поставщика OIDC. Запустите командную консоль SharePoint от имени администратора фермы и запустите следующий скрипт, чтобы создать ее:
Примечание.
Внимательно прочитайте инструкции, описанные в следующем сценарии PowerShell. Вам потребуется ввести значения, относящиеся к среде, в нескольких местах.
# Define claim types
$email = New-SPClaimTypeMapping "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" -IncomingClaimTypeDisplayName "EmailAddress" -SameAsIncoming
# Public key of the AD FS signing certificate
$signingCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\Data\Claims\ADFS Signing.cer")
# Set the AD FS URL where users are redirected to authenticate
$authendpointurl = "https://adfs.contoso.local/adfs/oauth2/authorize"
$registeredissuernameurl = "https://adfs.contoso.local/adfs"
$signouturl = "https://adfs.contoso.local/adfs/oauth2/logout"
# Replace <Client Identifier> with the value you saved in step #3 of AD FS Setup section
$clientIdentifier = "<Your Client Identifier>"
# Create a new SPTrustedIdentityTokenIssuer in SharePoint
New-SPTrustedIdentityTokenIssuer -Name "Contoso.local" -Description "Contoso.local" -ImportTrustCertificate $signingCert -ClaimsMappings $email -IdentifierClaim $email.InputClaimType -RegisteredIssuerName $registeredissuernameurl -AuthorizationEndPointUri $authendpointurl -SignOutUrl $signouturl -DefaultClientIdentifier $clientIdentifier
Командлет New-SPTrustedIdentityTokenIssuer
PowerShell расширен для поддержки OIDC с помощью следующих параметров:
Параметр | Описание |
---|---|
Имя | Предоставляет имя новому издателю маркера. |
Описание | Предоставляет описание новому издателю маркера. |
ImportTrustCertificate | Импортирует список сертификатов X509, которые будут использоваться для проверки id_token из идентификатора OIDC. Если поставщик удостоверений OIDC использует несколько сертификатов для цифровой id_token подписи , импортируйте эти сертификаты, и SharePoint проверит id_token , сопоставив цифровую подпись, созданную с помощью этих сертификатов. |
ClaimsMappings | Объект SPClaimTypeMapping , который будет использоваться для определения того, какое утверждение в id_token будет рассматриваться как идентификатор в SharePoint. |
IdentifierClaim | Указывает тип идентификатора. |
RegisteredIssuerName | Указывает идентификатор издателя, который выдает id_token . Он будет использоваться для проверки id_token . |
AuthorizationEndPointUrl | Указывает конечную точку авторизации поставщика удостоверений OIDC. |
SignoutUrl | Указывает конечную точку выхода поставщика удостоверений OIDC. |
DefaultClientIdentifier | Указывает client_id сервер SharePoint, который назначается поставщиком удостоверений OID. Это будет проверено на соответствие утверждению aud в id_token . |
ResponseTypesSupported | Указывает тип ответа поставщика удостоверений, который может быть принят этим издателем маркера. Он может принимать две строки: id_token и code id_token . Если этот параметр не указан, он будет использоваться code id_token по умолчанию. |
Важно!
Соответствующий сертификат необходимо добавить в хранилище сертификатов корневого центра SharePoint, и для этого есть два возможных варианта:
Если сертификат подписи AD FS выдан центром сертификации (рекомендуется по соображениям безопасности).
В хранилище необходимо добавить открытый ключ сертификата издателя (и все промежуточные компоненты). Запустите командную консоль SharePoint и выполните следующий скрипт, чтобы добавить сертификат:
$rootCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\Data\Claims\ADFS Signing issuer.cer") New-SPTrustedRootAuthority -Name "adfs.contoso.local signing root authority" -Certificate $rootCert
Если сертификат подписи AD FS является самозаверяющий сертификат (не рекомендуется из соображений безопасности).
Открытый ключ сертификата подписи AD FS необходимо добавить в хранилище. Запустите командную консоль SharePoint и выполните следующий скрипт, чтобы добавить сертификат:
$rootCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\Data\Claims\ADFS Signing.cer") New-SPTrustedRootAuthority -Name "adfs.contoso.local signing certificate" -Certificate $rootCert
Шаг 4. Настройка веб-приложения SharePoint
На этом шаге вы настроите веб-приложение в SharePoint для использования проверки подлинности AD FS OIDC с помощью SPTrustedIdentityTokenIssuer
созданного на предыдущем шаге.
Важно!
- Для зоны по умолчанию веб-приложения SharePoint должна быть включена проверка подлинности Windows. Это необходимо для средства-обходчика поиска.
- URL-адрес SharePoint, который будет использовать федерацию AD FS OIDC, должен быть настроен с помощью HTTPS.
Эту настройку можно выполнить следующим образом:
Создание веб-приложения и использование проверки подлинности OIDC в Windows и AD FS в зоне по умолчанию. Чтобы создать веб-приложение, сделайте следующее:
Запустите командную консоль SharePoint и запустите следующий скрипт, чтобы создать новый
SPAuthenticationProvider
:# This script creates a trusted authentication provider for OIDC $sptrust = Get-SPTrustedIdentityTokenIssuer "contoso.local" $trustedAp = New-SPAuthenticationProvider -TrustedIdentityTokenIssuer $sptrust
Выполните инструкции Создание веб-приложения в SharePoint Server , чтобы создать новое веб-приложение с поддержкой HTTPS/SSL с именем SharePoint — OIDC в contoso.local.
Откройте сайт центра администрирования SharePoint.
Откройте созданное веб-приложение, выберите "Поставщики проверки подлинности" на ленте, щелкните ссылку для зоны "По умолчанию" и выберите contoso.local в качестве доверенного поставщика удостоверений.
Перейдите в раздел Системные параметры Настройка альтернативных>сопоставлений> доступаКоллекция сопоставления альтернативного доступа.
Отфильтруйте отображение с помощью нового веб-приложения и убедитесь, что отображается следующая информация:
Расширение существующего веб-приложения для настройки проверки подлинности AD FS OIDC в новой зоне. Чтобы расширить существующее веб-приложение, выполните следующие действия.
Запустите командную консоль SharePoint и запустите PowerShell, чтобы расширить веб-приложение:
Пример:
# Get the trusted provider $sptrust = Get-SPTrustedIdentityTokenIssuer "Contoso.local" $ap = New-SPAuthenticationProvider -TrustedIdentityTokenIssuer $sptrust # Get the web app $wa = Get-SPWebApplication http://spsites # Extend the web app to the "Intranet" zone using trusted provider auth and a SharePoint managed certificate called "SharePoint OIDC Site" New-SPWebApplicationExtension -Identity $wa -Name "spsites" -port 443 -HostHeader 'spsites.contoso.local'-AuthenticationProvider $ap -SecureSocketsLayer -UseServerNameIndication -Certificate 'SharePoint OIDC Site' -Zone 'Intranet' -URL 'https://spsites.contoso.local'
Перейдите в раздел Системные параметры Настройка альтернативных>сопоставлений> доступаКоллекция сопоставления альтернативного доступа.
Отфильтруйте отображение с помощью расширенного веб-приложения и убедитесь, что отображается следующая информация:
Шаг 5. Убедитесь, что веб-приложение настроено с помощью SSL-сертификата
Так как проверка подлинности OpenID Connect 1.0 может работать только с протоколом HTTPS, необходимо задать сертификат в соответствующем веб-приложении. Если вы еще не сделали этого, выполните следующие действия, чтобы задать сертификат:
Создайте сертификат сайта:
Примечание.
Этот шаг можно пропустить, если сертификат уже создан.
Откройте консоль SharePoint PowerShell.
Выполните следующий скрипт, чтобы создать самозаверяющий сертификат и добавить его в ферму SharePoint:
New-SPCertificate -FriendlyName "Contoso SharePoint (2021)" -KeySize 2048 -CommonName spsites.contoso.local -AlternativeNames extranet.contoso.local, onedrive.contoso.local -OrganizationalUnit "Contoso IT Department" -Organization "Contoso" -Locality "Redmond" -State "Washington" -Country "US" -Exportable -HashAlgorithm SHA256 -Path "\\server\fileshare\Contoso SharePoint 2021 Certificate Signing Request.txt" Move-SPCertificate -Identity "Contoso SharePoint (2021)" -NewStore EndEntity
Важно!
Самозаверяемые сертификаты подходят только для тестовых целей. В рабочих средах настоятельно рекомендуется использовать сертификаты, выданные центром сертификации.
Задайте сертификат:
Чтобы назначить сертификат веб-приложению, можно использовать следующий командлет PowerShell:
Set-SPWebApplication -Identity https://spsites.contoso.local -Zone Default -SecureSocketsLayer -Certificate "Contoso SharePoint (2021)"
Шаг 6. Создание семейства веб-сайтов
На этом шаге вы создадите семейство веб-сайтов группы с двумя администраторами: одним из них является администратор Windows, а второй — федеративный (AD FS).
Откройте сайт центра администрирования SharePoint.
Перейдите в раздел Управление приложениями>Создание семейств веб-сайтов.
Введите заголовок, URL-адрес и выберите шаблон Сайт группы.
В разделе Основной администратор семейства веб-сайтов щелкните значок книги, чтобы открыть диалоговое окно выбора Люди.
В диалоговом окне выбора Люди введите учетную запись администратора Windows, например yvand.
Отфильтруйте список слева, выбрав Организации. Ниже приведен пример выходных данных:
Перейдите к учетной записи и нажмите кнопку ОК.
В разделе Дополнительный администратор семейства веб-сайтов щелкните значок книги, чтобы открыть диалоговое окно средства выбора Люди.
В диалоговом окне выбора Люди введите точное значение электронной почты учетной записи администратора AD FS, например yvand@contoso.local.
Отфильтруйте список слева, выбрав Contoso.local. Ниже приведен пример выходных данных:
Перейдите к учетной записи и нажмите кнопку ОК.
Нажмите кнопку ОК, чтобы создать семейство веб-сайтов.
После создания семейства веб-сайтов вы сможете войти в систему с помощью учетной записи администратора семейства веб-сайтов Windows или федеративной (AD FS OIDC).
Шаг 7. Настройка средства выбора Люди
При проверке подлинности OIDC средство выбора Люди не проверяет входные данные, что может привести к ошибкам или случайному выбору неправильного типа утверждения. Это можно решить с помощью пользовательского поставщика утверждений или с помощью нового поставщика утверждений с поддержкой UPA, включенного в SharePoint Server по подписке. Сведения о настройке поставщика утверждений с поддержкой UPA см. в статье Расширенный Люди средства выбора для современной проверки подлинности.