Copyright© 2017  Aiprovide Corporation all Right Reserved.

  • Aiprovide Coroporation
  • Aiprovide Corporation

SAML token と Access token[オンライン]

2017/05/07

この記事では、SAML tokeについてAccess tokenとの違いを記載し、CSOMにおいてSAML tokenが簡単に扱えることを記載しています。

1.SAML tokenとは

 OAuth・Access token と 権限の昇格[オンライン]

では、SharePointアドイン(アプリ)のProvider Hosted Appにおいて、認証/許可にAccess tokenが使用されることを記載しました。
 SharePoint Onlineではその他に、SAML tokenというトークンも認証/許可に使用しています。そして、このSAML tokenの方を一般的に使用します。

 

 一般的な利用において、ユーザーがSharePoint Online上のコンテンツにアクセスする場合、「Windows Azure ACS」がユーザー認証を行い、認証の結果としてSAML tokenをユーザーに発行します。

 

 

  1. ユーザーがクライントPCのブラウザから、SharePoint OnlineのHost Webに対し、コンテンツへのアクセスを要求します。

  2. Host Webは認証トークンの有無を判定し、要求が認証トークンを持っていない場合は、認証失敗の結果をクライアントPCのブラウザに返します。

  3. クライアントPCのブラウザは、「Windows Azure ACS」に認証を要求し、ユーザーの提示したクレデンシャルにより認証されます。

  4. 「Windows Azure ACS」は認証の結果として、SAML tokenを作成しクライアントPCのブラウザに送信します。

  5. ブラウザは、受け取ったSAML tokenを送信して、再度、Host Webに対し、コンテンツへのアクセスを要求します。

 

 

 また、Host Webは、コンテンツへのアクセス要求がSAML tokenを持つかAccess tokenを持つかで、その要求元が、クライアントPCのブラウザか、Provide Hosted AppのWeb アプリケーションかを判断します。

 

 この様にトークンは、認証/許可において重要な役割を担っていますが、SharePointにアクセスするプログラムを記述する場合は、幸いなことに、これらをMicrosoft社がライブラリとして提供してくれているため、非常に簡単に実装することができます。

 

2.JSOMの認証とCSOMの認証

 

 クライアント側のプログラムとして、クライアントPC上のアプリケーションからSharePoint上のコンテンツへアクセスする場合、CSOMとJSOMの二つを使用することができます。
 このうち、JSOMはJava script専用のライブラリです。SharePointのページ上に実装したJava scriptプログラムからSharePoint上のコンテンツにアクセスする場合は、このJSOMを使用します。スクリプトエディタに実装したプログラムやJSLinkに実装したプログラムが該当します。


 JSOMも、クライアントPC上で動作しますので、Host Webへアクセスする際には、SAML tokenを提示する必要があります。しかし、ブラウザ上で動作するため、既に「Windows Azure ACS」からSAML tokenを取得してます。Host Webへのアクセスには、このSAML tokenを使用することができるので、再度、SAML tokenを要求することはしません。

 したがって、JSOMによりプログラムを記述する際には、トークンについて意識する必要が全くありません。

 

 

 JSOMも業務アプリケーションを開発する上では、非常に重要な役割を担いますが、プログラムにおいて、認証について特に意識する必要がないのは以上の理由によります。

 また、SAML tokenを使用するため、SharePoint上のコンテンツにアクセスする際には、常に、ユーザーが保持するアクセス権で動作することになります。

 

 

 

3.CSOMによるSAML tokenの使用

 

 CSOMではJSOMとは異なり、プログラム起動時にSAML tokenを保持していません。そのため、明示的にSAML tokenを取得する必要があります。

 

 以下、「Windows Azure ACS」からSAML tokenを受け取り、これを持って、Host Webにアクセスする方法を記載します。「Windows Azure ACS」からSAML tokenを取得する部分は、CSOMが隠蔽してくれるため、非常に簡単にプログラムすることができます。

 

 

(1)クライアントコンテキストをインスタンス化します。

 

(2)クレデンシャルのパスワードをセキュア化します。

 

(3)コンテンツにクレデンシャルをセットします。

 

 

(4)サーバー側に、コンテンツの取得を要求します。

 

(5)全体としては、以下のようなコードとなります。

 

 

「(3)」にて、一回、インスタンス化したクライアントコンテキストにクレデンシャルをセットすれば、以降のサーバー側呼び出しにおいて、このクライアントコンテキストを使いまわすことができます。クレデンシャルのセットは一回だけで良くなります。

 

 

 実際には、SAML tokenを取得に際し、「Windows Azure ACS」にHTTPSのPOST送信により要求を行っていますが、この様にCSOMではこの処理が完全に隠蔽されています。このため、非常に簡単になっています。

 

Share on Facebook
Share on Twitter
Please reload

RECENT POST
Please reload