Active Directory フェデレーション サービス (AD FS) を使用して SharePoint Server で OIDC 認証を設定する
適用対象:2013 2016 2019 Subscription Edition SharePoint in Microsoft 365
前提条件
OpenID Connect (OIDC) 認証を使用して sharePoint Server を Active Directory フェデレーション サービス (AD FS) (AD FS) で構成する場合、構成を実行するには次のリソースが必要です。
- SharePoint Server サブスクリプション エディション ファーム。
-
.cer
ファイルにエクスポートされた AD FS 署名証明書の公開キーを使用して、Windows Server 2016以降の AD FS。既に作成されています。
この記事では、AD FS OIDC セットアップに次の値の例を使用します。
値 | リンク |
---|---|
SharePoint サイト URL | https://spsites.contoso.local/ |
AD FS サイト URL | https://adfs.contoso.local/adfs/ |
AD FS 認証エンドポイント | https://adfs.contoso.local/adfs/oauth2/authorize |
RegisteredIssuerName URL | https://adfs.contoso.local/adfs/ |
AD FS SignoutURL | https://adfs.contoso.local/adfs/oauth2/logout |
ID 要求の種類 | http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress |
Windows サイト コレクション管理者 | contoso\yvand |
フェデレーション (AD FS) サイト コレクション管理者のEmail値 | yvand@contoso.local |
手順 1: ID プロバイダーをセットアップする
AD FS で OIDC を設定するには、次の手順を実行します。
AD FS 管理で、[アプリケーション グループ] を右クリックし、[アプリケーション グループの追加] を選択します。
[ようこそ] ページに移動し、[名前] フィールドに「ADFSSSO」と入力し、[Client-Server アプリケーション] で Web アプリケーション テンプレートにアクセスする Web ブラウザーを選択します。 さらに [次へ] を選択します。
[ネイティブ アプリケーション] ページに移動し、[クライアント識別子] の値をコピーします。 これは、後で SharePoint の構成中にパラメーター
DefaultClientIdentifier
の値として使用されます。[ リダイレクト URL ] フィールドに「
https://spsites.contoso.local/
」と入力し、[ 追加] を選択します。 さらに [次へ] を選択します。[概要] ページに移動し、[次へ] を選択します。
[完了] ページに移動し、[閉じる] を選択します。
AD FS から トークン署名 証明書をエクスポートします。 このトークン署名証明書は、SharePoint セットアップで使用されます。 次の画像は、AD FS から トークン署名 証明書をエクスポートする方法を示しています。
必要な要求 ID が AD FS からの
id_token
に含まれていることを確認します。 電子メールを例として考えてみましょう。AD FS では、AD などの属性ストアから識別子要求を読み取る規則が構成されていることを前提としています。 前に AD FS で作成したこの特定の Web アプリケーションの 発行変換規則 を作成するには、次の手順を実行します。
作成した Web アプリケーションを開き、[ Issue Transformation Rule]\(問題変換ルール \) タブに移動します。
[ 規則の追加] を選択し、オプション の一覧から [要求として LDAP 属性を送信 ] を選択します。
要求規則に AD という名前を付け、[属性ストア] ドロップダウン メニューから [Active Directory] を選択します。 次に示すように、ドロップダウン ボックスを使用して 2 つのマッピングを作成します。
属性 値 電子メール アドレス メルアド Token-Groups - ドメイン名で修飾 役割 [ 完了] を選択 してルール ウィザードを閉じ、[ OK] を 選択して Web アプリケーションのプロパティを閉じます。 [ OK] をもう 1 回選択して、ルールを完了します。
SharePoint Server で OIDC を設定する場合は、作成した Web アプリケーションの AD FS サーバー側で nbf 要求を構成する必要があります。 この Web アプリケーションに nbf 要求が存在しない場合は、次の手順を実行して作成します。
作成した Web アプリケーションを開き、[ Issue Transformation Rule]\(問題変換ルール \) タブに移動します。
[ 規則の追加] を選択し、[ 適用] を選択します。 [要求規則の追加ウィザード] で、[要求規則テンプレート] オプションから [カスタム規則を使用して要求を送信する] を選択します。
[ 次へ ] を選択し、[ カスタム ルール ] フィールドに次の文字列を入力します。
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"] => issue(Type = "nbf", Value = "0");
[完了] を選択します。
手順 2: SharePoint ファームのプロパティを変更する
この手順では、SharePoint Server ファームのバージョンに基づいて SharePoint Server ファームのプロパティを変更する必要があります。
- SharePoint Server サブスクリプション エディション バージョン 24H1 の SharePoint ファーム プロパティの構成の詳細については、「SPSE バージョン 24H1 以降のバージョンを構成する」を参照してください。
- 24H1 より前のバージョンSharePoint Server サブスクリプション エディション SharePoint ファームのプロパティの構成の詳細については、「バージョン 24H1 より前の SPSE を構成する」を参照してください。
SharePoint Server サブスクリプション エディションバージョン 24H1 以降のバージョンを早期リリース機能の基本設定で構成する
SharePoint Server サブスクリプション エディション バージョン 24H1 (2024 年 3 月) 以降、SharePoint ファームが早期リリース機能優先用に構成されている場合は、SharePoint 証明書管理を使用して非ce Cookie 証明書を管理することで SharePoint Server ファームのプロパティを構成できます。 nonce Cookie 証明書は、OIDC 認証トークンがセキュリティで保護されるようにするためのインフラストラクチャの一部です。 次の PowerShell スクリプトを実行して構成します。
重要
このスクリプトを使用するには、上記のように SharePoint ファームを早期リリースに設定する必要があります。 そうでない場合、スクリプトはエラーなしで完了しますが、$farmの呼び出しです。UpdateNonceCertificate() は何も行いません。 ファームを早期リリース用に構成しない場合は、代わりに バージョン 24H1 より前の SPSE の構成手順を使用する 必要があります。
注:
ファーム管理者として 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)
バージョン 24H1 より前のSharePoint Server サブスクリプション エディションを構成する
# 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: ID プロバイダーを信頼するように SharePoint を構成する
この手順では、SHAREPoint が AD FS を OIDC プロバイダーとして信頼するために必要な構成を格納する SPTrustedTokenIssuer
を作成します。 ファーム管理者として 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 | OIDC 識別子から id_token を検証するために使用される X509 証明書の一覧をインポートします。 OIDC IDP が複数の証明書を使用して id_token にデジタル署名する場合は、これらの証明書をインポートし、SharePoint は、これらの証明書を使用して生成されたデジタル署名を照合して id_token を検証します。 |
ClaimsMappings |
SPClaimTypeMapping オブジェクト。これは、id_token のどの要求が SharePoint の識別子と見なされるのかを識別するために使用されます。 |
IdentifierClaim | 識別子の種類を指定します。 |
RegisteredIssuerName |
id_token を発行する発行者識別子を指定します。 これは、 id_token の検証に使用されます。 |
AuthorizationEndPointUrl | OIDC ID プロバイダーの承認エンドポイントを指定します。 |
SignoutUrl | OIDC ID プロバイダーのサインアウト エンドポイントを指定します。 |
DefaultClientIdentifier | OID ID プロバイダーによって割り当てられる SharePoint サーバーの client_id を指定します。 これは、 id_token の aud 要求に対して検証されます。 |
ResponseTypesSupported | このトークン発行者が受け入れることができる IDP の応答の種類を指定します。
id_token とcode id_token の 2 つの文字列を受け取ることができます。 このパラメーターが指定されていない場合は、 code id_token が既定で使用されます。 |
重要
関連する証明書を SharePoint ルート証明機関の証明書ストアに追加する必要があり、これを行うには 2 つのオプションがあります。
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 Web アプリケーションを構成する
この手順では、前の手順で作成した SPTrustedIdentityTokenIssuer
を使用して、AD FS OIDC 認証を使用するように SharePoint で Web アプリケーションを構成します。
重要
- SharePoint Web アプリケーションの既定のゾーンでは、Windows 認証が有効になっている必要があります。 これは、検索クローラーに必要です。
- AD FS OIDC フェデレーションを使用する SharePoint URL は、HTTPS で構成する必要があります。
この構成は、次のいずれかの方法で実行できます。
新しい Web アプリケーションを作成し、既定のゾーンで Windows と AD FS OIDC 認証の両方を使用する。 新しい Web アプリケーションを作成するには、次の操作を行います。
SharePoint 管理シェルを起動し、次のスクリプトを実行して新しい
SPAuthenticationProvider
を作成します。# This script creates a trusted authentication provider for OIDC $sptrust = Get-SPTrustedIdentityTokenIssuer "contoso.local" $trustedAp = New-SPAuthenticationProvider -TrustedIdentityTokenIssuer $sptrust
「 SharePoint Server で Web アプリケーションを作成 する」に従って、contoso.local で SharePoint - OIDC という名前の HTTPS/SSL を有効にする新しい Web アプリケーションを作成します。
SharePoint サーバーの全体管理サイトを開きます。
作成した Web アプリケーションを開き、リボンで [認証プロバイダー] を選択し、[既定] ゾーンのリンクをクリックし、[信頼された ID プロバイダー] として [contoso.local] を選択します。
[システム設定>代替アクセス マッピングの構成>Alternate Access Mapping Collection] に移動します。
新しい Web アプリケーションでディスプレイをフィルター処理し、次の情報が表示されることを確認します。
既存の Web アプリケーションを拡張して、新しいゾーンに AD FS OIDC 認証を設定する。 既存の Web アプリケーションを拡張するには、次の操作を行います。
SharePoint 管理シェルを起動し、PowerShell を実行して Web アプリケーションを拡張します。
例:
# 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'
[システム設定>代替アクセス マッピングの構成>Alternate Access Mapping Collection] に移動します。
拡張された Web アプリケーションで表示をフィルター処理し、次の情報が表示されることを確認します。
手順 5: Web アプリケーションが SSL 証明書で構成されていることを確認する
OpenID Connect 1.0 認証は HTTPS プロトコルでのみ機能するため、対応する Web アプリケーションで証明書を設定する必要があります。 まだ設定していない場合は、次の手順に従って証明書を設定します。
サイト証明書を生成します。
注:
証明書を既に生成している場合は、この手順をスキップできます。
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 コマンドレットを使用して、証明書を Web アプリケーションに割り当てることができます。
Set-SPWebApplication -Identity https://spsites.contoso.local -Zone Default -SecureSocketsLayer -Certificate "Contoso SharePoint (2021)"
手順 6: サイト コレクションを作成する
この手順では、2 人の管理者 (1 人は Windows 管理者、もう 1 人はフェデレーション (AD FS) 管理者) でチーム サイト コレクションを作成します。
SharePoint サーバーの全体管理サイトを開きます。
[アプリケーション管理>サイト コレクションの作成] に移動します。
[タイトル]、[URL] を入力し、テンプレートの [チーム サイト] を選択します。
[プライマリ サイト コレクション管理者] セクションで、ブック アイコンを選択して、[People ピッカー] ダイアログを開きます。
[People ピッカー] ダイアログで、Windows 管理者アカウント (例: yvand) を入力します。
左側の一覧をフィルター処理し、[ 組織] を選択します。 出力例を次に示します。
アカウントに移動し、[ OK] を選択します。
[セカンダリ サイト コレクション管理者] セクションで、ブック アイコンを選択して、[People ピッカー] ダイアログを開きます。
[Peopleピッカー] ダイアログで、AD FS 管理者アカウントの正確な電子メール値を入力します (例: yvand@contoso.local)。
Contoso.local を選択して、左側の一覧をフィルター処理します。 出力例を次に示します。
アカウントに移動し、[ OK] を選択します。
[OK]を選んでサイト コレクションを作成します。
サイト コレクションが作成されると、Windows またはフェデレーション (AD FS OIDC) サイト コレクション管理者アカウントを使用してサインインできるようになります。
手順 7: People ピッカーを設定する
OIDC 認証では、People ピッカーでは入力が検証されないため、スペルミスやユーザーが誤って間違った要求の種類を選択する可能性があります。 これは、カスタム要求プロバイダーを使用するか、SharePoint Server サブスクリプション エディションに含まれる新しい UPA でサポートされる要求プロバイダーを使用して対処できます。 UPA に基づく要求プロバイダーを構成するには、「先進認証用の拡張Peopleピッカー」を参照してください。