Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
こんにちは SharePoint サポートの森 健吾 (kenmori) です。
今回の投稿では、SharePoint Server でクレームベース認証による認証後に発行されたクレームの値をすべて出力し、確認するためのサンプルをご紹介します。
用途
主に以下のような用途でご使用いただけますと幸いです。
・クレーム ベース認証の理解
・クレームを使用した認証関連のカスタマイズを実施する事前準備
・フェデレーション認証 (例. ADFS 認証) でセキュリティ グループに何を入力すれば良いかの確認
特に、ADFS 認証でセキュリティ グループ名として入力する値に関するご質問が多い状況です。ADFS の [要求規則の編集] から、設定値を確認する必要があります。
"Token-Groups (SID)" (例. S-1-5...)
"Token-Groups - ドメイン名を含む" (例. DOMAIN\group_name)
"Token-Groups - 完全修飾ドメイン名を含む" (例. DOMAIN.local\group_name)
"Token-Groups - 名前の指定なし" (例. group_name)
質問に至る背景として、フェデレーション認証 (例. ADFS 認証) は外部の信頼された ID プロバイダーに認証処理を委任しています。そのため、SharePoint のフェデレーション認証用のクレーム プロバイダーは、メンバーおよびロール情報を保持しておりませんし、それらの情報の入手先も把握していません。
その結果、PeoplePicker による人やグループの検索が実施できず、入力された値をそのまま解決することしかできません。
実際に有効な、ADFS 認証でセキュリティ グループ名を確認するには、本サンプルで認証されたユーザーのクレーム タイプとして出力される https://schemas.microsoft.com/ws/2008/06/identity/claims/role の値を確認し、その値をグループ名として PeoplePicker で指定すれば問題ありません。
手順
1. 以下の内容をテキスト エディタに貼り付け、UTF-8 形式で getclaims.aspx などとして保存します。
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml" >
<head runat="server">
<title>View claim for the current user.</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%
Microsoft.IdentityModel.Claims.IClaimsIdentity ci = System.Threading.Thread.CurrentPrincipal.Identity as Microsoft.IdentityModel.Claims.IClaimsIdentity;
Response.Write("<table><tr><th align=left>ClaimType</th><th align=left>ClaimValue</th></tr>");
foreach (Microsoft.IdentityModel.Claims.Claim c in ci.Claims)
{
Response.Write(string.Format("<tr><td>{0}</td><td>{1}</td></tr>", c.ClaimType, c.Value));
}
Response.Write("</table>");
%>
</div>
</form>
</body>
</html>
2. 下記のフォルダに配置します。
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\<ver>\TEMPLATE\LAYOUTS
- 補足
<ver> については 2010 は 14, 2013 は 15 を指定します。
3. ブラウザーで認証を完了させた後、該当ページにアクセスします。
https://sharepoint/_layouts/getclaims.aspx
4. 下記のような画面でクレーム タイプごとの値一覧を確認できます。
例えば、サイトの権限にセキュリティ グループとして "Domain Admins" などを指定して、権限を割り当てたとします。
この場合、ユーザーが対象のサイトにアクセスした際、クレーム属性のhttps://schemas.microsoft.com/ws/2008/06/identity/claims/roleの値に "Domain Admins" を保持していることを判断して権限があると認識されます。
今回の投稿は以上になります。