メインコンテンツへスキップ
Auth0は、SharePointの認証プロセスを大幅に簡素化するのに役立ちます。このチュートリアルでは、Auth0を使用してSharePointにシングルサインオン()を追加する方法を学びます。ユーザーは、任意のソーシャルアイデンティティプロバイダー(Facebook、X、GitHubなど)、エンタープライズプロバイダー(LDAP、Active Directory、ADFSなど)、またはユーザー名とパスワードを使用してログインできるようになります。
Auth0は、Auth0 Claims Provider for SharePoint 2010/2013のサポートを終了しました。既存のテナントに対しては、このパッケージの使用を停止することが奨励されます。新規テナントはこのパッケージを使用できません。

セットアップ

1.アカウント統合を追加する

最初に、Dashboardの[SSO Integrations(SSO統合)]セクションに移動し、アプリのリストから [SharePoint] を選択します。

2.ライブマニュアルに従う

SharePointサーバーがインターネットに接続していない場合は、インストールファイルを手動でダウンロードします(オフラインでのインストール方法を確認してください)。
[Settings(設定)] タブで、SharePoint WebアプリケーションのURLと外部URL(通常、代替アクセスマッピングのインターネットエンドポイント)を入力する必要があります。 ライブマニュアルは、SharePoint用Auth0 CmdLetsのインストールから始まります。
SharePoint Management Shell - cmdlets installation
これらがインストールされると、さまざまなWebアプリケーションに対してAuth0とクレームプロバイダーを有効または無効にできるようになりますAuth0での認証を有効にする必要があります。
SharePoint Management Shell - Auth0 install - Enable Authentication
その後、クレームプロバイダーをインストールして、ユーザー選択機能と権限が正しく機能するようにします。
SharePoint Management Shell - install claims provider
これらのスクリプトが実行されたら、中央管理で設定を完了します。
SharePoint central admin - complete configuration
Enable-Auth0の呼び出しは、次のように設定できることに注意してください。
  • ユーザーの一意の識別子を変更する(メールアドレスやユーザーIDなど)
  • 追加のクレームをSharePointに渡すことを許可する
  • デフォルトのWindows認証を有効または無効にする
以下の例では、ロールクレームをクレームマッピングに追加し、Windows認証を許可しています。

3.これでSharePointの設定が完了しました

Auth0をSSOブローカーとして使用するようにSharePointを設定しました。ユーザーがあなたのサイトを訪問すると、ログインページが開き、そのアプリケーションに対して有効になっているすべての接続が表示されます。 クレームプロバイダーのインストール時にどのクレームがマッピングされているかに応じて、この追加情報はユーザーの個人設定ページにも表示されます。
SharePoint - user information
SharePoint central admin - complete configuration
Enable-Auth0の呼び出しは、次のように設定できることに注意してください。
  • ユーザーの一意の識別子を変更する(メールアドレスやユーザーIDなど)
  • 追加のクレームをSharePointに渡すことを許可する
  • デフォルトのWindows認証を有効または無効にする
以下の例では、ロールクレームをクレームマッピングに追加し、Windows認証を許可しています。
これでSharePointがAuth0をSSOブローカーとして使用するようになります。

ログインページをカスタマイズする

ログインページは、「Auth0ユニバーサルログイン」の指示に従ってカスタマイズできます。 ユーザーがAuth0を通さずにWindows認証を使用してSharePointに対して認証できるようにする手段を提供したい場合もあるかもしれません。それは、ログインページをカスタマイズし、Windows認証エンドポイントへのリンクを追加することで実現できます(通常、https://yoursharepointserver/_windows/default.aspx?ReturnUrl=/_layouts/15/Authenticate.aspxのようなリンク)。 これを実行する1つの方法は、jQueryを使用してLockウィジェットを修正し、Windows認証エンドポイントへのリンクを追加することです。 カスタマイズしたログインページの<body>セクションの先頭に、jQueryへの参照を追加する必要があります。
lock.show()を呼び出す前に、リンクを追加するHTML DOMに修正を加えるためのコードを追加します。

トラブルシューティング

追加のクレームや認可を扱う際には、現在のユーザーのクレームを確認できると便利です。Microsoft の専門家であるリアム・クリーリー氏の記事「Claims Viewer Web Part」は、ユーザーのクレームに関する問題のトラブルシューティングに役立ちます。

SP2010のログ

エラーや警告はSharePointの統合ログサービスに記録され、ULS Viewerのようなツールを使用して、クレームプロバイダーを使用する際に発生した問題をトラブルシューティングできます。 ULS Viewとその仕様の詳細については、Microsoftの「ULS Viewer」マニュアルをご覧ください。

SP2013のログ

SharePoint 2013では、ログに統合ログサービスを使用せず、代わりにWindowsのイベントトレースを利用するようになりました。これにより、パフォーマンスが向上し、記録されたすべてのイベントを複数の方法で取得できます。 ログをリアルタイムで表示するには、GitHubからAuth0 Logs Processorをダウンロードしてください。このツールをSharePointサーバー上で実行すると、SharePointがクレームプロバイダーに対して行っているすべての呼び出しを確認できます。

次の手順

認可

Auth0から渡されるクレームは、SharePointの認可にも利用できます。たとえば、ロールクレームに Fabrikam HR が含まれるユーザーは、特定のサイトへのアクセス権を持つか、あるいはそのサイトで共同作業者としての権限を持つべきです。 例として Azure ADを取り上げてみましょう。このクラウドディレクトリでは、ユーザーはグループの一員になることができ、田中さんは Fabrikam HRに所属しています。 田中さんがAzure ADアカウントを使用してログインすると(その接続でSecurity Groups属性が有効になっている場合)、グループメンバーシップ情報がユーザープロファイルのgroups属性に保存されます。 これらのグループをSharePointのロールとして利用できるようにするためには、設定にこれを追加するルールを作成する必要があります。このルールは、 Fabrikam Intranet (SharePoint) という名前のアプリケーションに対してのみ実行されます。
これにより、groupsを含む追加の送信クレームhttp://schemas.microsoft.com/ws/2008/06/identity/claims/roleが追加され、SharePointで認可に使用されます。 クレームプロバイダーをインストールする際には、ロールクレームをクレームマッピングリストに追加することで、そのクレームがSharePointに渡されるようにする必要があります。
デフォルトでは、ユーザーはサイトへのアクセス権を持っていません。 現在は、特定のユーザーをSharePointグループ(例:Contributors)に追加する代わりに、 ロール をSharePointグループに追加できるようになりました。以下は、「Fabrikam HR」のメンバーをContributorsグループに追加する方法を示すPowerShellスクリプトのサンプルです。
このクレーム値をContributorsグループに追加した後、田中さんはサイトにアクセスしてその内容を編集できるようになります。

ユーザープロファイルの同期

SharePointはデフォルトでActive Directoryから発信されたユーザープロファイル情報を同期できます。現在、Auth0を使用することで、ユーザーはソーシャルからエンタープライズまでさまざまな種類の接続元から来ることができるため、ユーザープロファイルの同期にはそれらに応じた異なるアプローチが必要になります。 最初のアプローチとして、数時間ごとに実行されるタイマージョブを作成して、Auth0のユーザーエンドポイントをクエリし、それらのユーザーのプロファイル情報を同期する方法があります。
別の方法として、このロジックをHttpModuleとして実装し、ユーザーがログインするたびに実行されるようにすることもできます。