Руководство. Реализация федеративной проверки подлинности между идентификатором Microsoft Entra и локальной средой SharePoint
Описание сценария
В этом руководстве описана настройка федеративной проверки подлинности между идентификатором Microsoft Entra и локальной средой SharePoint. Цель заключается в том, чтобы пользователи могли войти в систему с идентификатором Microsoft Entra и использовать свое удостоверение для доступа к локальным сайтам SharePoint.
Необходимые компоненты
Необходимые для настройки ресурсы:
- Клиент Microsoft Entra. Если ее нет, можно создать бесплатную учетную запись.
- Ферма SharePoint 2013 или более поздней версии.
В этой статье используются приведенные ниже значения.
- Имя корпоративного приложения (в идентификаторе Microsoft Entra):
SharePoint corporate farm
- Идентификатор доверия (в идентификаторе Microsoft Entra) / область (в SharePoint):
urn:sharepoint:federation
- loginUrl (идентификатор Microsoft Entra):
https://login.microsoftonline.com/dc38a67a-f981-4e24-ba16-4443ada44484/wsfed
- URL-адрес сайта SharePoint:
https://spsites.contoso.local/
- URL-адрес ответа для сайта SharePoint:
https://spsites.contoso.local/_trust/
- Имя конфигурации доверия SharePoint:
MicrosoftEntraTrust
- UserPrincipalName тестового пользователя Microsoft Entra:
AzureUser1@demo1984.onmicrosoft.com
Настройка корпоративного приложения в идентификаторе Microsoft Entra
Чтобы настроить федерацию в идентификаторе Microsoft Entra, необходимо создать выделенное корпоративное приложение. Его настройка упрощается благодаря предварительно настроенному шаблону SharePoint on-premises
, который можно найти в коллекции приложений.
Создание корпоративного приложения
- Войдите в Центр администрирования Microsoft Entra как минимум администратор облачных приложений.
- Перейдите к приложениям>Identity>Applications>Enterprise. Новое приложение.
- В поле поиска введите Локальная среда SharePoint. В области результатов выберите Локальная среда SharePoint.
- Укажите имя приложения (в данном учебнике это
SharePoint corporate farm
) и нажмите кнопку Создать, чтобы добавить приложение. - В новом корпоративном приложении щелкните Свойства и проверьте значение параметра Требуется назначение пользователей. Для этого сценария задайте для него значение Нет и нажмите кнопку Сохранить.
Настройка корпоративного приложения
В этом разделе вы настроите проверку подлинности SAML и определите утверждения, которые будут отправляться в SharePoint после успешной проверки подлинности.
В разделе "Обзор" корпоративного приложения
SharePoint corporate farm
выберите 2. Настройте единый вход и укажите SAML в следующем диалоговом окне.На странице Настройка единого входа с помощью SAML щелкните значок Изменить, чтобы открыть панель Базовая конфигурация SAML.
В разделе Базовая конфигурация SAML выполните следующие действия:
Убедитесь, что в поле Идентификатор указано это значение:
urn:sharepoint:federation
.В поле URL-адрес ответа введите URL-адрес в следующем формате:
https://spsites.contoso.local/_trust/
.В поле URL-адрес для входа введите URL-адрес в следующем формате:
https://spsites.contoso.local/
.Выберите Сохранить.
В разделе Атрибуты и утверждения пользователя удалите следующие типы утверждений, которые не имеют смысла, так как они не будут использоваться средой SharePoint для предоставления разрешений:
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname
Теперь параметры должны выглядеть следующим образом:
Скопируйте сведения, которые понадобятся позже в SharePoint:
В разделе Сертификат подписи SAML скачайте сертификат (Base64). Это открытый ключ сертификата подписи, используемого идентификатором Microsoft Entra для подписи токена SAML. SharePoint использует его для проверки целостности входящих токенов SAML.
В разделе Настройка корпоративной фермы SharePoint скопируйте URL-адрес входа в Блокнот и замените завершающую строку /saml2 на /wsfed.
Внимание
Обязательно замените /saml2 на /wsfed , чтобы убедиться, что идентификатор Microsoft Entra ID выдает токен SAML 1.1, как это требуется SharePoint.
- В разделе Настройка корпоративной фермы SharePoint скопируйте URL-адрес выхода.
Настройка SharePoint для доверия идентификатору Microsoft Entra
Создание доверия в SharePoint
На этом шаге вы создадите spTrustedLoginProvider для хранения конфигурации, которой SharePoint должна доверять идентификатору Microsoft Entra. Для этого вам потребуется информация из идентификатора Microsoft Entra, скопированного выше. Обратите внимание, что использование Windows PowerShell может привести к сбою некоторых команд. Запустите оболочку управления SharePoint и запустите следующий скрипт, чтобы создать его:
# Path to the public key of the Microsoft Entra SAML signing certificate (self-signed), downloaded from the Enterprise application in the Azure portal
$signingCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\Microsoft Entra app\SharePoint corporate farm.cer")
# Unique realm (corresponds to the "Identifier (Entity ID)" in the Microsoft Entra enterprise application)
$realm = "urn:sharepoint:federation"
# Login URL copied from the Microsoft Entra enterprise application. Make sure to replace "saml2" with "wsfed" at the end of the URL:
$loginUrl = "https://login.microsoftonline.com/dc38a67a-f981-4e24-ba16-4443ada44484/wsfed"
# Define the claim types used for the authorization
$userIdentifier = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" -IncomingClaimTypeDisplayName "name" -LocalClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"
$role = New-SPClaimTypeMapping "http://schemas.microsoft.com/ws/2008/06/identity/claims/role" -IncomingClaimTypeDisplayName "Role" -SameAsIncoming
# Let SharePoint trust the Microsoft Entra signing certificate
New-SPTrustedRootAuthority -Name "Microsoft Entra signing certificate" -Certificate $signingCert
# Create a new SPTrustedIdentityTokenIssuer in SharePoint
$trust = New-SPTrustedIdentityTokenIssuer -Name "MicrosoftEntraTrust" -Description "Microsoft Entra ID" -Realm $realm -ImportTrustCertificate $signingCert -ClaimsMappings $userIdentifier, $role -SignInUrl $loginUrl -IdentifierClaim $userIdentifier.InputClaimType
Настройка веб-приложения SharePoint
На этом шаге вы настроите веб-приложение в SharePoint, чтобы доверять созданному выше приложению Microsoft Entra Enterprise. Необходимо учитывать важные моменты.
- Для зоны по умолчанию веб-приложения SharePoint должна быть включена проверка подлинности Windows. Это необходимо для сканера службы поиска.
- URL-адрес SharePoint, который будет использовать проверку подлинности Microsoft Entra, должен быть задан с помощью HTTPS.
Создайте или дополните веб-приложение. В этой статье описаны две возможные конфигурации.
При создании веб-приложения, использующего проверку подлинности Windows и Microsoft Entra в зоне по умолчанию:
Запустите Командную консоль SharePoint и выполните следующий скрипт:
# This script creates a new web application and sets Windows and Microsoft Entra authentication on the Default zone # URL of the SharePoint site federated with Microsoft Entra $trustedSharePointSiteUrl = "https://spsites.contoso.local/" $applicationPoolManagedAccount = "Contoso\spapppool" $winAp = New-SPAuthenticationProvider -UseWindowsIntegratedAuthentication -DisableKerberos:$true $sptrust = Get-SPTrustedIdentityTokenIssuer "MicrosoftEntraTrust" $trustedAp = New-SPAuthenticationProvider -TrustedIdentityTokenIssuer $sptrust New-SPWebApplication -Name "SharePoint - Microsoft Entra" -Port 443 -SecureSocketsLayer -URL $trustedSharePointSiteUrl -ApplicationPool "SharePoint - Microsoft Entra" -ApplicationPoolAccount (Get-SPManagedAccount $applicationPoolManagedAccount) -AuthenticationProvider $winAp, $trustedAp
Откройте страницу центра администрирования SharePoint.
В разделе Параметры системы выберите Настройка сопоставлений альтернативного доступа. Откроется окно Коллекция сопоставлений альтернативного доступа.
Отфильтруйте содержимое, чтобы отображалось только новое веб-приложение, и убедитесь, что видите что-то наподобие следующего:
Если вы расширяете существующее веб-приложение для использования проверки подлинности Microsoft Entra в новой зоне:
Запустите Командную консоль SharePoint и выполните следующий скрипт:
# This script extends an existing web application to set Microsoft Entra authentication on a new zone # URL of the default zone of the web application $webAppDefaultZoneUrl = "http://spsites/" # URL of the SharePoint site federated with ADFS $trustedSharePointSiteUrl = "https://spsites.contoso.local/" $sptrust = Get-SPTrustedIdentityTokenIssuer "MicrosoftEntraTrust" $ap = New-SPAuthenticationProvider -TrustedIdentityTokenIssuer $sptrust $wa = Get-SPWebApplication $webAppDefaultZoneUrl New-SPWebApplicationExtension -Name "SharePoint - Microsoft Entra" -Identity $wa -SecureSocketsLayer -Zone Internet -Url $trustedSharePointSiteUrl -AuthenticationProvider $ap
Откройте страницу центра администрирования SharePoint.
В разделе Параметры системы выберите Настройка сопоставлений альтернативного доступа. Откроется окно Коллекция сопоставлений альтернативного доступа.
Отфильтруйте экран, чтобы отображалось только новое расширенное веб-приложение, и убедитесь, что видите нечто вроде этого:
После создания веб-приложения можно создать корневое семейство веб-сайтов и добавить учетную запись Windows в качестве администратора основного семейства веб-сайтов.
Создание сертификата для сайта SharePoint
Так как в URL-адресе SharePoint используется протокол HTTPS (
https://spsites.contoso.local/
), на соответствующем сайте служб IIS должен быть установлен сертификат. Чтобы создать самозаверяющий сертификат, выполните указанные ниже действия.Внимание
Самозаверяющие сертификаты допустимо использовать только для целей тестирования. В рабочей среде мы настоятельно рекомендуем использовать только сертификаты, выданные центром сертификации.
Откройте консоль Windows PowerShell.
Выполните указанный ниже скрипт, чтобы создать самозаверяющий сертификат и добавить его в хранилище MY на компьютере.
New-SelfSignedCertificate -DnsName "spsites.contoso.local" -CertStoreLocation "cert:\LocalMachine\My"
Установка сертификата на сайте IIS
- Откройте консоль диспетчера IIS.
- Разверните сервер в представлении дерева, разверните узлы, выберите сайт SharePoint — идентификатор Microsoft Entra и выберите привязки.
- Выберите Привязка HTTPS и щелкните Изменить.
- В поле сертификата TLS/SSL выберите сертификат (например, spsites.contoso.local, созданный выше) и нажмите кнопку ОК.
Примечание.
Если у вас несколько веб-интерфейсных серверов, необходимо повторить эту операцию для каждого из них.
Базовая конфигурация доверия между SharePoint и Идентификатором Microsoft Entra теперь завершена. Давайте посмотрим, как войти на сайт SharePoint в качестве пользователя Microsoft Entra.
Вход в качестве зарегистрированного пользователя
Идентификатор Microsoft Entra имеет два типа пользователей: гостевых пользователей и пользователей-участников. Начнем с зарегистрированного пользователя — это обычный пользователь, относящийся к вашей организации.
Создание пользователя-участника в идентификаторе Microsoft Entra
- Войдите в Центр администрирования Microsoft Entra как минимум администратор пользователя.
- Перейдите в раздел Удостоверение>Пользователи>Все пользователи.
- Выберите "Создать пользователя>" в верхней части экрана.
- В свойствах пользователя выполните следующие действия.
- В поле "Отображаемое имя" введите
B.Simon
. - В поле имени участника-пользователя введите username@companydomain.extensionимя пользователя. Например,
B.Simon@contoso.com
. - Установите флажок Показать пароль и запишите значение, которое отображается в поле Пароль.
- Выберите Review + create (Просмотреть и создать).
- В поле "Отображаемое имя" введите
- Нажмите кнопку создания.
- Вы можете поделиться сайтом с этим пользователем и разрешить к нему доступ.
Предоставление разрешений пользователю Microsoft Entra в SharePoint
Войдите в семейство корневых сайтов SharePoint с учетной записью Windows (администратора семейства веб-сайтов) и нажмите кнопку Общий доступ.
В появившемся диалоговом окне необходимо ввести точное значение userprincipalname, например AzureUser1@demo1984.onmicrosoft.com
, и обязательно выбрать результат утверждения имя (чтобы увидеть тип утверждения, наведите указатель мыши на результат).
Внимание
Внимательно введите значение пользователя, которого нужно пригласить, и выберите соответствующий тип утверждения в списке, иначе общий доступ не будет работать.
Это ограничение связано с тем, что SharePoint не проверяет данные из инструмента выбора пользователей, что может привести к ошибкам, опечаткам или неправильному выбору, если был случайно указан неправильный тип утверждения.
Чтобы устранить этот сценарий, решение с открытым исходным кодом с именем EntraCP можно использовать для подключения SharePoint 2019 / 2016 / 2013 с идентификатором Microsoft Entra и разрешить входные данные для клиента Microsoft Entra. Дополнительные сведения см. в разделе EntraCP.
Ниже приведен тот же поиск с настроенной записью EntraCP: SharePoint возвращает фактических пользователей на основе входных данных:
Внимание
EntraCP не является продуктом Майкрософт и не поддерживается служба поддержки Майкрософт. Чтобы скачать, установить и настроить EntraCP в локальной ферме SharePoint, ознакомьтесь с веб-сайтом EntraCP .
Теперь пользователь AzureUser1@demo1984.onmicrosoft.com
Microsoft Entra может использовать свое удостоверение для входа на сайт https://spsites.contoso.local/
SharePoint.
Предоставление разрешений группе безопасности
Добавление типа утверждения группы в корпоративное приложение
В разделе "Обзор" корпоративного приложения
SharePoint corporate farm
выберите 2. Настройте единый вход.В разделе Атрибуты и утверждения пользователя выполните указанные ниже действия, если отсутствует утверждение группы.
- Выберите Добавить утверждение о группе, выберите Группы безопасности и убедитесь, что для исходного атрибута задано значение ИД группы.
- Установите флажок Изменить имя утверждения группы, затем — флажок Выводить группы в виде утверждений ролей и нажмите кнопку Сохранить.
- Теперь раздел Атрибуты и утверждения пользователя должен выглядеть следующим образом:
Создание группы безопасности в идентификаторе Microsoft Entra
Создадим группу безопасности.
Перейдите к группам удостоверений>.
Выберите Создать группу.
Укажите тип группы (Безопасность), имя группы (например,
AzureGroup1
) и тип членства. Добавьте созданного выше пользователя в качестве члена и щелкните Создать:
Предоставление разрешений группе безопасности в SharePoint
Группы безопасности Microsoft Entra идентифицируются с их атрибутом Id
, который является GUID (например, 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
).
Без специального поставщика утверждений пользователям приходится вводить точное значение (Id
) для группы в инструменте выбора пользователей и выбирать соответствующий тип утверждения. Этот способ не является ни удобным, ни надежным.
Чтобы избежать этого, в этой статье используется сторонний поставщик утверждений EntraCP , чтобы найти группу в SharePoint.
Управление доступом пользователей-гостей
Есть два типа гостевых учетных записей.
- Гостевые учетные записи B2B: эти пользователи размещаются во внешнем клиенте Microsoft Entra
- Гостевые учетные записи MSA: эти пользователи находятся в поставщике удостоверений Майкрософт (Hotmail, Outlook) или поставщике учетных записей социальных сетей (Google или аналогичный).
По умолчанию идентификатор Microsoft Entra задает как уникальный идентификатор пользователя, так и утверждение "name" атрибуту user.userprincipalname
.
К сожалению, для гостевых учетных записей этот атрибут является неоднозначным, как видно из таблицы ниже.
Исходный атрибут, заданный в идентификаторе Microsoft Entra | Фактическое свойство, используемое идентификатором Microsoft Entra для гостей B2B | Фактическое свойство, используемое идентификатором Microsoft Entra для гостей MSA | Свойство, которое SharePoint может использовать для проверки удостоверения |
---|---|---|---|
user.userprincipalname |
mail , например: guest@PARTNERTENANT |
userprincipalname , например: guest_outlook.com#EXT#@TENANT.onmicrosoft.com |
неоднозначно |
user.localuserprincipalname |
userprincipalname , например: guest_PARTNERTENANT#EXT#@TENANT.onmicrosoft.com |
userprincipalname , например: guest_outlook.com#EXT#@TENANT.onmicrosoft.com |
userprincipalname |
Наконец, чтобы убедиться, что учетные записи гостя идентифицируются одним атрибутом, необходимо обновить утверждения идентификатора корпоративного приложения таким образом, чтобы использовать атрибут user.localuserprincipalname
вместо user.userprincipalname
.
Обновление приложения для использования одинакового атрибута для всех гостевых пользователей
В разделе "Обзор" корпоративного приложения
SharePoint corporate farm
выберите 2. Настройте единый вход.На странице Настройка единого входа с помощью SAML щелкните значок Правки в области Атрибуты и утверждения пользователя.
В разделе Атрибуты и утверждения пользователя выполните указанные ниже действия.
Выберите Уникальный идентификатор пользователя (ИД имени), измените его свойство Исходный атрибут на user.localuserprincipalname и нажмите кнопку Сохранить.
Выберите
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
, измените его свойство Исходный атрибут на user.localuserprincipalname, и нажмите кнопку Сохранить.Теперь раздел Атрибуты и утверждения пользователя должен выглядеть следующим образом:
Приглашение гостей в SharePoint
Примечание.
В этом разделе предполагается, что используется поставщик утверждений EntraCP
В разделе выше вы обновили корпоративное приложение таким образом, чтобы использовать один атрибут для всех учетных записей гостей.
Теперь необходимо обновить конфигурацию EntraCP, чтобы отразить это изменение и использовать атрибут userprincipalname
для гостевых учетных записей:
- Откройте страницу центра администрирования SharePoint.
- В разделе "Безопасность" выберите глобальную конфигурацию EntraCP.
- В разделе Свойство идентификатора пользователя установите для параметра Идентификатор пользователя для пользователей "Гость": значение UserPrincipalName.
- Нажмите кнопку ОК.
Теперь вы можете приглашать любого гостевого пользователя на сайтах SharePoint.
Настройка федерации для нескольких веб-приложений
Эта конфигурация подходит для одного веб-приложения, но если вы планируете использовать тот же доверенный поставщик удостоверений для нескольких веб-приложений, нужна дополнительная настройка. Например, предположим, что у вас есть отдельное веб-приложение https://otherwebapp.contoso.local/
, и теперь вы хотите включить проверку подлинности Microsoft Entra на нем. Для этого настройте SharePoint для передачи параметра SAML WReply и добавьте URL-адреса в корпоративное приложение.
Настройка SharePoint для передачи параметра SAML WReply
- На сервере SharePoint откройте консоль управления SharePoint 201x и воспользуйтесь следующей командой. Используйте то же имя издателя токенов доверенных удостоверений, что и ранее.
$t = Get-SPTrustedIdentityTokenIssuer "MicrosoftEntraTrust"
$t.UseWReplyParameter = $true
$t.Update()
Добавление URL-адресов в корпоративное приложение
Войдите в Центр администрирования Microsoft Entra как минимум администратор облачных приложений.
Перейдите к приложениям> Identity>Applications>Enterprise Выберите ранее созданное корпоративное приложение и выберите единый вход.
На странице Настройка единого входа с помощью SAML измените значения в разделе Базовая конфигурация SAML.
В разделе URL-адрес ответа (URL-адрес службы потребителей утверждений) добавьте URL-адрес (например,
https://otherwebapp.contoso.local/
) всех дополнительных веб-приложений, которые должны войти в систему с помощью идентификатора Microsoft Entra и нажмите кнопку "Сохранить".
Настройка времени существования маркера безопасности
По умолчанию идентификатор Microsoft Entra создает маркер SAML, действительный в течение 1 часа, который не может быть настроен в портал Azure или с помощью политики условного доступа.
Однако можно создать политику времени существования пользовательского токена и назначить ее корпоративному приложению, созданному для SharePoint Server.
Чтобы добиться этого, выполните приведенный ниже сценарий:
Install-Module Microsoft.Graph
Connect-MgGraph -Scopes "Policy.ReadWrite.ApplicationConfiguration","Policy.Read.All","Application.ReadWrite.All"
$appDisplayName = "SharePoint corporate farm"
$sp = Get-MgServicePrincipal -Search DisplayName:"$appDisplayName" -ConsistencyLevel eventual
$oldPolicy = Get-MgServicePrincipalTokenLifetimePolicy -ServicePrincipalId $sp.Id
if ($null -ne $oldPolicy) {
# There can be only 1 TokenLifetimePolicy associated to the service principal (or 0, as by default)
Remove-MgServicePrincipalAppManagementPolicy -AppManagementPolicyId $oldPolicy.Id -ServicePrincipalId $sp.Id
}
# Get / create a custom token lifetime policy
$policyDisplayName = "WebPolicyScenario"
$policy = Get-MgPolicyTokenLifetimePolicy -Filter "DisplayName eq '$policyDisplayName'"
if ($null -eq $policy) {
$params = @{
Definition = @('{"TokenLifetimePolicy":{"Version":1,"AccessTokenLifetime":"4:00:00"}}')
DisplayName = $policyDisplayName
IsOrganizationDefault = $false
}
$policy = New-MgPolicyTokenLifetimePolicy -BodyParameter $params
}
# Assign the token lifetime policy to an app
$body = @{
"@odata.id" = "https://graph.microsoft.com/v1.0/policies/tokenLifetimePolicies/$($policy.Id)"
}
Invoke-GraphRequest -Uri ('https://graph.microsoft.com/v1.0/servicePrincipals/{0}/tokenLifetimePolicies/$ref' -f $sp.Id) -Method POST -Body $body