Copyright© 2017  Aiprovide Corporation all Right Reserved.

  • Aiprovide Coroporation
  • Aiprovide Corporation

ユーザーが特定のSharPointグループに所属するかを判定する No.2[オンプレ]

2017/05/15

「特定のユーザーが特定のSharePointグループに所属するか」を判定するプログラムをどう実現すべきか、その方法を記載しています。

「ユーザーが特定のSharePointグループに所属するか」は簡単にできそうです、そうでもないことを、

ユーザーが特定のSharPointグループに所属するかを判定する No.1[オンプレ]

に記載しました。

 こちらでは、ユーザーが特定のSharePointグループに所属するかの判定に、SPGroupクラスのContainsCurrentUserプロパティを使用すれば、ログインユーザーについては、そのユーザーがActive Directoryのセキュリティグループを経由してSharePointグループに所属していたとしても、その判定が可能であることを記載しました。しかし、このプロパティではログインユーザー以外の任意のユーザーについては判定できないことも記載しました。

 

 では、ログインユーザー以外の任意のユーザーについて、特定のSharePointグループに所属するか、そのユーザーがActive Directoryのセキュリティグループを経由してSharePointグループに所属していても確実に判定するには、どの様にすべきなのでしょうか。

 正直言いまして、これを実現するAPIの存在を知りません。多分、その様なAPIは存在しないのではと考えています。

 

実は、業務システムの実現において、この様な判定を必要とする状況は非常に少ないです。

 業務システムの構築に必要なマスターリスト/トランザクションリストについて、アクセス権の設計を確実に行い、アクセス許可レベル適切に付与すれば、プログラムはログインユーザーの権限でのみ動作すれば充分です。権限の昇格をしてシステムアカウントに偽装する必要もありません。権限の昇格を必要とする場合でも、必要最小限に絞ることができます。

 

 しかし、まれに「任意のユーザーについて特定のSharePointグループに所属するか」の判定を必要とする状況も発生します。その様な場合には、以下の様にして対処してきました。

 

 

①権限確認用のカスタムリストを使用する。

 

 任意のユーザーが特定のSharePointグループに所属するかを判定するAPIは存在しませんが、特定のアイテムについて権限を保持しているかを判定するAPIは存在しますので、それを使用します。

多分に裏技的なのですが、SharePointグループに所属しているかどうかを、リストアイテムに権限を有しているかどうかに変換します。

 

具体的には、以下の様なSharePointグループが存在するとして、

 

 

(1)列としてタイトルのみを持つ、カスタムリストを作成します。

 

(2)そのアイテムとして、SharePointグループ名をタイトルとして持つ、リストアイテムをSharePointグループの数分登録します。

 

(3)それらのリストアイテムの各々について権限の継承を切り、タイトル名に設定されているSharePointグループについてのみ、アイテムを表示可能な権限を付与します。

以下は、「業務001」というリストアイテムに付与した権限を表示しています。

 

 

(4)「任意のユーザーが特定のSharePointグループに所属するかを判定」するには、リストから、そのSharePointグループ名に合致するリストアイテムを検索し、そのリストアイテムについて、そのユーザーがアイテムを表示可能な権限を持っている場合は、そのSharePointグループに所属していることになります。

 

 つまり、リストアイテムについて、特定のSharePointグループにのみ権限を付与しているので、あるユーザーがそのリストアイテムについてアクセス可能であるという事は、そのSharePointグループに所属している筈であるという形で判定します。

 

 具体的なプログラムは以下となります。

 

 

このプログラムは、"i:0#.w|aiprovide\syoshida"というログイン名を持つユーザーが、SPGroup_TextBoxというテキストボックスに指定されたSharePointグループに所属しているかをの判定している例ですが、この部分は業務に合わせた実装となります。

 

 

②運用のサポート

 

 ただし、この様にシステムを実現した場合、SharePointグループの追加/削除の都度、カスタムリストのリストアイテムを追加/削除、および、権限の設定のメンテナンスが必要となります。

 これを、運用担当ユーザーの負担にするには少々忍びないので、この部分を自動化するプログラムを用意し、SharePointグループの追加/削除が必要となった場合に、運用サポートの時間内で実行してもらいます。

 

サイトコレクション内に存在するSharePointグループから業務システムに関係するSharePointグループを抽出し、そのSharePointグループに対応するリストアイテムをカスタムリストに登録し、そのSharePointグループのみに「閲覧」のアクセス許可レベルを付与します。

 

この様なプログラムとなります。

 

 

 

以上となります。

お役に立てれば幸いです。

 

 

 

Share on Facebook
Share on Twitter
Please reload

RECENT POST
Please reload