Руководство. Реализация федеративной проверки подлинности между идентификатором Microsoft Entra и локальной средой SharePoint

Описание сценария

В этом руководстве описана настройка федеративной проверки подлинности между идентификатором Microsoft Entra и локальной средой SharePoint. Цель заключается в том, чтобы пользователи могли войти в систему с идентификатором Microsoft Entra и использовать свое удостоверение для доступа к локальным сайтам SharePoint.

Необходимые компоненты

Необходимые для настройки ресурсы:

В этой статье используются приведенные ниже значения.

  • Имя корпоративного приложения (в идентификаторе 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, который можно найти в коллекции приложений.

Создание корпоративного приложения

  1. Войдите в Центр администрирования Microsoft Entra как минимум облачные приложения Администратор istrator.
  2. Перейдите к приложениям>Identity>Applications>Enterprise. Новое приложение.
  3. В поле поиска введите Локальная среда SharePoint. В области результатов выберите Локальная среда SharePoint.
  4. Укажите имя приложения (в данном учебнике это SharePoint corporate farm) и нажмите кнопку Создать, чтобы добавить приложение.
  5. В новом корпоративном приложении щелкните Свойства и проверьте значение параметра Требуется назначение пользователей. Для этого сценария задайте для него значение Нет и нажмите кнопку Сохранить.

Настройка корпоративного приложения

В этом разделе вы настроите проверку подлинности SAML и определите утверждения, которые будут отправляться в SharePoint после успешной проверки подлинности.

  1. В разделе "Обзор" корпоративного приложения SharePoint corporate farm выберите 2. Настройте единый вход и укажите SAML в следующем диалоговом окне.

  2. На странице Настройка единого входа с помощью SAML щелкните значок Изменить, чтобы открыть панель Базовая конфигурация SAML.

  3. В разделе Базовая конфигурация SAML выполните следующие действия:

    1. Убедитесь, что в поле Идентификатор указано это значение: urn:sharepoint:federation.

    2. В поле URL-адрес ответа введите URL-адрес в следующем формате: https://spsites.contoso.local/_trust/.

    3. В поле URL-адрес для входа введите URL-адрес в следующем формате: https://spsites.contoso.local/.

    4. Выберите Сохранить.

  4. В разделе Атрибуты и утверждения пользователя удалите следующие типы утверждений, которые не имеют смысла, так как они не будут использоваться средой 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
  5. Теперь параметры должны выглядеть следующим образом:

    Basic SAML settings

  6. Скопируйте сведения, которые понадобятся позже в 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, скопированного выше. Запустите Командную консоль 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.
  1. Создайте или дополните веб-приложение. В этой статье описаны две возможные конфигурации.

    • При создании веб-приложения, использующего проверку подлинности Windows и Microsoft Entra в зоне по умолчанию:

      1. Запустите Командную консоль 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
        
      2. Откройте страницу центра администрирования SharePoint.

      3. В разделе Параметры системы выберите Настройка сопоставлений альтернативного доступа. Откроется окно Коллекция сопоставлений альтернативного доступа.

      4. Отфильтруйте содержимое, чтобы отображалось только новое веб-приложение, и убедитесь, что видите что-то наподобие следующего:

        Alternate Access Mappings of web application

    • Если вы расширяете существующее веб-приложение для использования проверки подлинности Microsoft Entra в новой зоне:

      1. Запустите Командную консоль 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
        
      2. Откройте страницу центра администрирования SharePoint.

      3. В разделе Параметры системы выберите Настройка сопоставлений альтернативного доступа. Откроется окно Коллекция сопоставлений альтернативного доступа.

      4. Отфильтруйте экран, чтобы отображалось только новое расширенное веб-приложение, и убедитесь, что видите нечто вроде этого:

        Alternate Access Mappings of extended web application

После создания веб-приложения можно создать корневое семейство веб-сайтов и добавить учетную запись Windows в качестве администратора основного семейства веб-сайтов.

  1. Создание сертификата для сайта SharePoint

    Так как в URL-адресе SharePoint используется протокол HTTPS (https://spsites.contoso.local/), на соответствующем сайте служб IIS должен быть установлен сертификат. Чтобы создать самозаверяющий сертификат, выполните указанные ниже действия.

    Важно!

    Самозаверяющие сертификаты допустимо использовать только для целей тестирования. В рабочей среде мы настоятельно рекомендуем использовать только сертификаты, выданные центром сертификации.

    1. Откройте консоль Windows PowerShell.

    2. Выполните указанный ниже скрипт, чтобы создать самозаверяющий сертификат и добавить его в хранилище MY на компьютере.

      New-SelfSignedCertificate -DnsName "spsites.contoso.local" -CertStoreLocation "cert:\LocalMachine\My"
      
  2. Установка сертификата на сайте IIS

    1. Откройте консоль диспетчера IIS.
    2. Разверните сервер в представлении дерева, разверните узлы, выберите сайт SharePoint — идентификатор Microsoft Entra и выберите привязки.
    3. Выберите Привязка HTTPS и щелкните Изменить.
    4. В поле сертификата TLS/SSL выберите сертификат (например, spsites.contoso.local, созданный выше) и нажмите кнопку ОК.

    Примечание.

    Если у вас несколько веб-интерфейсных серверов, необходимо повторить эту операцию для каждого из них.

Базовая конфигурация доверия между SharePoint и Идентификатором Microsoft Entra теперь завершена. Давайте посмотрим, как войти на сайт SharePoint в качестве пользователя Microsoft Entra.

Вход в качестве зарегистрированного пользователя

Идентификатор Microsoft Entra имеет два типа пользователей: гостевых пользователей и пользователей-участников. Начнем с зарегистрированного пользователя — это обычный пользователь, относящийся к вашей организации.

Создание пользователя-участника в идентификаторе Microsoft Entra

  1. Войдите в Центр администрирования Microsoft Entra как минимум пользователь Администратор istrator.
  2. Перейдите ко всем пользователям удостоверений>>.
  3. Выберите "Создать пользователя>" в верхней части экрана.
  4. В свойствах пользователя выполните следующие действия.
    1. В поле "Отображаемое имя" введите B.Simon.
    2. В поле имени участника-пользователя введите username@companydomain.extensionимя пользователя. Например, B.Simon@contoso.com.
    3. Установите флажок Показать пароль и запишите значение, которое отображается в поле Пароль.
    4. Выберите Review + create (Просмотреть и создать).
  5. Нажмите кнопку создания.
  6. Вы можете поделиться сайтом с этим пользователем и разрешить к нему доступ.

Предоставление разрешений пользователю Microsoft Entra в SharePoint

Войдите в семейство корневых сайтов SharePoint с учетной записью Windows (администратора семейства веб-сайтов) и нажмите кнопку Общий доступ.
В появившемся диалоговом окне необходимо ввести точное значение userprincipalname, например AzureUser1@demo1984.onmicrosoft.com, и обязательно выбрать результат утверждения имя (чтобы увидеть тип утверждения, наведите указатель мыши на результат).

Важно!

Внимательно введите значение пользователя, которого нужно пригласить, и выберите соответствующий тип утверждения в списке, иначе общий доступ не будет работать.

Screenshot of people picker results without EntraCP.

Это ограничение связано с тем, что SharePoint не проверяет данные из инструмента выбора пользователей, что может привести к ошибкам, опечаткам или неправильному выбору, если был случайно указан неправильный тип утверждения.
Чтобы устранить этот сценарий, решение с открытым исходным кодом с именем EntraCP можно использовать для подключения SharePoint 2019 / 2016 / 2013 с идентификатором Microsoft Entra и разрешить входные данные для клиента Microsoft Entra. Дополнительные сведения см. в разделе EntraCP.

Ниже приведен тот же поиск с настроенной записью EntraCP: SharePoint возвращает фактических пользователей на основе входных данных:

Screenshot of people picker results with EntraCP.

Важно!

EntraCP не является продуктом Майкрософт и не поддерживается служба поддержки Майкрософт. Чтобы скачать, установить и настроить EntraCP в локальной ферме SharePoint, ознакомьтесь с веб-сайтом EntraCP .

Теперь пользователь AzureUser1@demo1984.onmicrosoft.com Microsoft Entra может использовать свое удостоверение для входа на сайт https://spsites.contoso.local/SharePoint.

Предоставление разрешений группе безопасности

Добавление типа утверждения группы в корпоративное приложение

  1. В разделе "Обзор" корпоративного приложения SharePoint corporate farm выберите 2. Настройте единый вход.

  2. В разделе Атрибуты и утверждения пользователя выполните указанные ниже действия, если отсутствует утверждение группы.

    1. Выберите Добавить утверждение о группе, выберите Группы безопасности и убедитесь, что для исходного атрибута задано значение ИД группы.
    2. Установите флажок Изменить имя утверждения группы, затем — флажок Выводить группы в виде утверждений ролей и нажмите кнопку Сохранить.
    3. Теперь раздел Атрибуты и утверждения пользователя должен выглядеть следующим образом:

    Claims for users and group

Создание группы безопасности в идентификаторе Microsoft Entra

Создадим группу безопасности.

  1. Перейдите к группам удостоверений>.

  2. Выберите Создать группу.

  3. Укажите тип группы (Безопасность), имя группы (например, AzureGroup1) и тип членства. Добавьте созданного выше пользователя в качестве члена и щелкните Создать:

    Create a Microsoft Entra security group

Предоставление разрешений группе безопасности в SharePoint

Группы безопасности Microsoft Entra идентифицируются с их атрибутом Id, который является GUID (например, E89EF0A3-46CC-45BF-93A4-E078FCEBFC45).
Без специального поставщика утверждений пользователям приходится вводить точное значение (Id) для группы в инструменте выбора пользователей и выбирать соответствующий тип утверждения. Этот способ не является ни удобным, ни надежным.
Чтобы избежать этого, в этой статье используется сторонний поставщик утверждений EntraCP , чтобы найти группу в SharePoint.

People picker search Microsoft Entra group

Управление доступом пользователей-гостей

Есть два типа гостевых учетных записей.

  • Гостевые учетные записи 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.

Обновление приложения для использования одинакового атрибута для всех гостевых пользователей

  1. В разделе "Обзор" корпоративного приложения SharePoint corporate farm выберите 2. Настройте единый вход.

  2. На странице Настройка единого входа с помощью SAML щелкните значок Правки в области Атрибуты и утверждения пользователя.

  3. В разделе Атрибуты и утверждения пользователя выполните указанные ниже действия.

    1. Выберите Уникальный идентификатор пользователя (ИД имени), измените его свойство Исходный атрибут на user.localuserprincipalname и нажмите кнопку Сохранить.

    2. Выберите http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name, измените его свойство Исходный атрибут на user.localuserprincipalname, и нажмите кнопку Сохранить.

    3. Теперь раздел Атрибуты и утверждения пользователя должен выглядеть следующим образом:

    User Attributes & Claims for Guests

Приглашение гостей в SharePoint

Примечание.

В этом разделе предполагается, что используется поставщик утверждений EntraCP

В разделе выше вы обновили корпоративное приложение таким образом, чтобы использовать один атрибут для всех учетных записей гостей.
Теперь необходимо обновить конфигурацию EntraCP, чтобы отразить это изменение и использовать атрибут userprincipalname для гостевых учетных записей:

  1. Откройте страницу центра администрирования SharePoint.
  2. В разделе "Безопасность" выберите глобальную конфигурацию EntraCP.
  3. В разделе Свойство идентификатора пользователя установите для параметра Идентификатор пользователя для пользователей "Гость": значение UserPrincipalName.
  4. Нажмите кнопку ОК.

Screenshot of EntraCP guests accounts configuration.

Теперь вы можете приглашать любого гостевого пользователя на сайтах SharePoint.

Настройка федерации для нескольких веб-приложений

Эта конфигурация подходит для одного веб-приложения, но если вы планируете использовать тот же доверенный поставщик удостоверений для нескольких веб-приложений, нужна дополнительная настройка. Например, предположим, что у вас есть отдельное веб-приложение https://otherwebapp.contoso.local/ , и теперь вы хотите включить проверку подлинности Microsoft Entra на нем. Для этого настройте SharePoint для передачи параметра SAML WReply и добавьте URL-адреса в корпоративное приложение.

Настройка SharePoint для передачи параметра SAML WReply

  1. На сервере SharePoint откройте консоль управления SharePoint 201x и воспользуйтесь следующей командой. Используйте то же имя издателя токенов доверенных удостоверений, что и ранее.
$t = Get-SPTrustedIdentityTokenIssuer "MicrosoftEntraTrust"
$t.UseWReplyParameter = $true
$t.Update()

Добавление URL-адресов в корпоративное приложение

  1. Войдите в Центр администрирования Microsoft Entra как минимум облачные приложения Администратор istrator.

  2. Перейдите к приложениям> Identity>Applications>Enterprise Выберите ранее созданное корпоративное приложение и выберите единый вход.

  3. На странице Настройка единого входа с помощью SAML измените значения в разделе Базовая конфигурация SAML.

  4. В разделе URL-адрес ответа (URL-адрес службы потребителей утверждений) добавьте URL-адрес (например, https://otherwebapp.contoso.local/) всех дополнительных веб-приложений, которые должны войти в систему с помощью идентификатора Microsoft Entra и нажмите кнопку "Сохранить".

Specify additional web applications

Настройка времени существования маркера безопасности

По умолчанию идентификатор 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