Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-15.log failed

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
study:java:sharepointonline:poc [2021/07/09 09:15] – [POC段階4] bananastudy:java:sharepointonline:poc [2021/07/09 09:55] (現在) – [POC段階4] banana
行 2: 行 2:
 本稿では、Sharepoint onlineのRESTサービスを利用するための処理フローを紹介します。\\ 本稿では、Sharepoint onlineのRESTサービスを利用するための処理フローを紹介します。\\
 Javaの実装例は別の記事で紹介する予定です。 Javaの実装例は別の記事で紹介する予定です。
 +{{keywords>POC of consuming Sharepoint online}}
  
-===== on-premise環境のSharepointの違いについて =====+===== on-premise環境のSharepoint連携との違いについて =====
 以前の投稿(([[study:java:sharepoint|Java consuming SharePoint REST API]]))でon-premise環境のSharepointサービスと連携する方法を紹介しました。\\ 以前の投稿(([[study:java:sharepoint|Java consuming SharePoint REST API]]))でon-premise環境のSharepointサービスと連携する方法を紹介しました。\\
 Sharepoint online連携においてon-premise環境と大きい違いは以下の2点です。\\ Sharepoint online連携においてon-premise環境と大きい違いは以下の2点です。\\
行 9: 行 10:
   - SSL接続(TLS)   - SSL接続(TLS)
 まず、認証方式ですがon-premiseと同じくユーザー認証((Add-in認証方式もありますが、認証に使うクライアントシークレットの有効期限がある為、ユーザー認証を選択しました。))を使いますが、認証スキムが異なります。\\ まず、認証方式ですがon-premiseと同じくユーザー認証((Add-in認証方式もありますが、認証に使うクライアントシークレットの有効期限がある為、ユーザー認証を選択しました。))を使いますが、認証スキムが異なります。\\
 +on-premise環境ではNTLM認証を使いましたが、cloud環境ではSAML認証を使います。また認証cookieも利用します。\\
 SSL接続については、POC段階ではツール((curl, firefoxのRESTClient, POSTMAN等のツールがあります。))が対応しているため、意識する必要はありませんが、実装段階ではTLSのバージョン、Cipher Suite(暗号スイート)等を確認する必要が出てくるかも知れません。 SSL接続については、POC段階ではツール((curl, firefoxのRESTClient, POSTMAN等のツールがあります。))が対応しているため、意識する必要はありませんが、実装段階ではTLSのバージョン、Cipher Suite(暗号スイート)等を確認する必要が出てくるかも知れません。
 ===== POCの概要 ===== ===== POCの概要 =====
行 25: 行 27:
 https://login.microsoftonline.com/getuserrealm.srf?login=%(UserAccount)&xml=1 https://login.microsoftonline.com/getuserrealm.srf?login=%(UserAccount)&xml=1
 </code> </code>
-ここで、%%%(UserAccount)%%に利用アカウント(XXX.onmicrosoft.com若しくは独自ドメインのアカウント)を代入します。 +ここで、%%%(UserAccount)%%に利用アカウント(XXX.onmicrosoft.com若しくは独自ドメインのアカウント)を代入します。\\ 
-ADFSを利用る場合の回答例を下に示します。+ADFSを利用している場合のResponse例を下に示します。
 <code xml> <code xml>
 <RealmInfo Success="true"> <RealmInfo Success="true">
行 49: 行 51:
 </RealmInfo> </RealmInfo>
 </code> </code>
 +ここで、%%<IsFederatedNS>%%項目を見れば、ADFS環境かどうかが分かります。\\ 
 +上記の例ではtrueですので、ADFS環境になります。\\ 
 +また、%%<STSAuthURL>%%項目のURLがSAML Security tokenを取得するために必要なURLになります。
 ===== POC段階2 ===== ===== POC段階2 =====
-SAML Assertionを取得するために、前段階で取得した%%STSAuthURL%%宛にSOAP EnvelopeをPOST送信します。 +SAML Security tokenを取得するために、前段階で取得した%%STSAuthURL%%宛にSOAPメッセージをPOST送信します。 
-SOAP Envelopeを下に示します。+SOAPメッセージ例を下に示します。
 <code xml> <code xml>
 <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"
行 86: 行 90:
 </code> </code>
 ここで、%(username), %(userpass)には、ユーザーアカウント及びパスワードを代入します。\\ ここで、%(username), %(userpass)には、ユーザーアカウント及びパスワードを代入します。\\
-また、上記xmlを送信する際、Headerに下記を追加します。+また、上記xmlを送信する際、Requestヘッダーに下記を追加します。
 <code> <code>
  Content-Type:application/soap+xml; charset=utf-8  Content-Type:application/soap+xml; charset=utf-8
 </code> </code>
-回答のxmlから%%<t:RequestedSecurityToken>%%に囲まれる部分がSAML Assertionです。\\+Responseのxmlから%%<t:RequestedSecurityToken>%%に囲まれる部分がSAML Security tokenです。\\
 こちらのraw typeテキスト((Pretty typeではエラーになります。))がBinary token取得のために必要です。\\ こちらのraw typeテキスト((Pretty typeではエラーになります。))がBinary token取得のために必要です。\\
-SAML Assertionの例は、内容が長いのと見てもチンプンカンプンなのでLOL割愛します。+SAML Security tokenの例は、内容が長いのと見てもチンプンカンプンなのでLOL割愛します。
  
 ===== POC段階3 ===== ===== POC段階3 =====
-Binary tokenを取得するために、前段階で取得したSAML AssertionをSOAPメッセージとして下記URLにPOST送信します。+Binary tokenを取得するために、前段階で取得したSAML Security tokenをSOAPメッセージとして下記URLにPOST送信します。
 ((ここからは外部にアクセスするため、会社等のProxy環境にある場合は、Proxy認証が必要になります。)) ((ここからは外部にアクセスするため、会社等のProxy環境にある場合は、Proxy認証が必要になります。))
 <code> <code>
行 129: 行 133:
  
 </code> </code>
-ここで、%(samltoken)には、SAML Assertionをraw typeで代入します。\\+ここで、%(samltoken)には、SAML Security tokenをraw typeで代入します。\\
 続いて、%(siteurl)には、SharepointサイトURLを代入します。 続いて、%(siteurl)には、SharepointサイトURLを代入します。
  
-また、上記xmlを送信する際、Headerに下記を追加します。+また、上記xmlを送信する際、Requestヘッダーに下記を追加します。
 <code> <code>
  Content-Type:application/soap+xml; charset=utf-8  Content-Type:application/soap+xml; charset=utf-8
行 148: 行 152:
 xxxxには、独自ドメイン(エイリアス)が入ります。\\ xxxxには、独自ドメイン(エイリアス)が入ります。\\
 正常の場合は、HTTP code=302(FOUND)が帰ってきます。\\ 正常の場合は、HTTP code=302(FOUND)が帰ってきます。\\
-そして、下記の2つのcookieがResponse Headerに含まれているのが確認できます。+そして、下記の2つのcookieがResponseヘッダーに含まれているのが確認できます。((内容が長いため、一部分をカットしました。))
 <code> <code>
 Set-Cookie: rtFa=I4phG2qFs+pUekvF4a03qJ0Pt79SUAzM3bLl5CMkZbgmODJDRjhFQjQtRTEzQi; path=/; SameSite=None; secure; HttpOnly Set-Cookie: rtFa=I4phG2qFs+pUekvF4a03qJ0Pt79SUAzM3bLl5CMkZbgmODJDRjhFQjQtRTEzQi; path=/; SameSite=None; secure; HttpOnly
行 155: 行 159:
 Set-Cookie: FedAuth=77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48U1A+VjEwLDBoLmZ; path=/; SameSite=None; secure; HttpOnly Set-Cookie: FedAuth=77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48U1A+VjEwLDBoLmZ; path=/; SameSite=None; secure; HttpOnly
 </code> </code>
 +こちらの取得したcookieを次のリクエストを送信する際、Cookieヘッダーに追加します。\\
 +以降のRESTサービスへのリクエストは、認証cookieさえあれば利用可能です。
 +===== Reference =====
 +  * [[http://www.sharepoint-insight.com/2016/03/21/step-by-step-sharepoint-online-authentiaction-process-via-http-protocol/|Step-by-Step SharePoint Online Authentiaction Process via HTTP Protocol]]
 +  * [[https://sharepoint.stackexchange.com/questions/235083/how-to-send-an-sso-saml-assertion-to-sharepoint-online-to-get-fedauth-and-rtfa-c|How to send an SSO SAML assertion to Sharepoint Online to get FedAuth and rtFa cookies?]]
 +  * [[https://stackoverflow.com/questions/11295953/claim-auth-from-adfs|Claim auth from ADFS]]
  
- +~~DISCUSSION~~
- +
  

QR Code
QR Code study:java:sharepointonline:poc (generated for current page)