差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| study:java:sharepointonline:poc [2021/07/09 09:26] – [Reference] banana | study:java:sharepointonline:poc [2025/08/23 13:04] (現在) – [POC段階4] banana | ||
|---|---|---|---|
| 行 2: | 行 2: | ||
| 本稿では、Sharepoint onlineのRESTサービスを利用するための処理フローを紹介します。\\ | 本稿では、Sharepoint onlineのRESTサービスを利用するための処理フローを紹介します。\\ | ||
| Javaの実装例は別の記事で紹介する予定です。 | Javaの実装例は別の記事で紹介する予定です。 | ||
| + | {{keywords> | ||
| - | ===== on-premise環境のSharepointの違いについて ===== | + | ====== on-premise環境のSharepoint連携との違いについて |
| 以前の投稿(([[study: | 以前の投稿(([[study: | ||
| 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, | SSL接続については、POC段階ではツール((curl, | ||
| - | ===== POCの概要 ===== | + | ====== POCの概要 |
| POCの流れを下記に示します。 | POCの流れを下記に示します。 | ||
| - %%UserRealm%%確認 | - %%UserRealm%%確認 | ||
| 行 25: | 行 27: | ||
| https:// | https:// | ||
| </ | </ | ||
| - | ここで、%%%(UserAccount)%%に利用アカウント(XXX.onmicrosoft.com若しくは独自ドメインのアカウント)を代入します。 | + | ここで、%%%(UserAccount)%%に利用アカウント(XXX.onmicrosoft.com若しくは独自ドメインのアカウント)を代入します。\\ |
| - | ADFSを利用する場合の回答例を下に示します。 | + | ADFSを利用している場合のResponse例を下に示します。 |
| <code xml> | <code xml> | ||
| < | < | ||
| 行 49: | 行 51: | ||
| </ | </ | ||
| </ | </ | ||
| + | ここで、%%< | ||
| + | 上記の例ではtrueですので、ADFS環境になります。\\ | ||
| + | また、%%< | ||
| ===== POC段階2 ===== | ===== POC段階2 ===== | ||
| - | SAML Assertionを取得するために、前段階で取得した%%STSAuthURL%%宛にSOAP | + | SAML Security tokenを取得するために、前段階で取得した%%STSAuthURL%%宛にSOAPメッセージをPOST送信します。 |
| - | SOAP Envelopeを下に示します。 | + | SOAPメッセージ例を下に示します。 |
| <code xml> | <code xml> | ||
| < | < | ||
| 行 86: | 行 90: | ||
| </ | </ | ||
| ここで、%(username), | ここで、%(username), | ||
| - | また、上記xmlを送信する際、Headerに下記を追加します。 | + | また、上記xmlを送信する際、Requestヘッダーに下記を追加します。 |
| < | < | ||
| | | ||
| </ | </ | ||
| - | 回答のxmlから%%< | + | Responseのxmlから%%< |
| こちらの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 | + | Binary tokenを取得するために、前段階で取得したSAML |
| ((ここからは外部にアクセスするため、会社等のProxy環境にある場合は、Proxy認証が必要になります。)) | ((ここからは外部にアクセスするため、会社等のProxy環境にある場合は、Proxy認証が必要になります。)) | ||
| < | < | ||
| 行 129: | 行 133: | ||
| </ | </ | ||
| - | ここで、%(samltoken)には、SAML | + | ここで、%(samltoken)には、SAML |
| 続いて、%(siteurl)には、SharepointサイトURLを代入します。 | 続いて、%(siteurl)には、SharepointサイトURLを代入します。 | ||
| - | また、上記xmlを送信する際、Headerに下記を追加します。 | + | また、上記xmlを送信する際、Requestヘッダーに下記を追加します。 |
| < | < | ||
| | | ||
| 行 148: | 行 152: | ||
| xxxxには、独自ドメイン(エイリアス)が入ります。\\ | xxxxには、独自ドメイン(エイリアス)が入ります。\\ | ||
| 正常の場合は、HTTP code=302(FOUND)が帰ってきます。\\ | 正常の場合は、HTTP code=302(FOUND)が帰ってきます。\\ | ||
| - | そして、下記の2つのcookieがResponse | + | そして、下記の2つのcookieがResponseヘッダーに含まれているのが確認できます。((内容が長いため、一部分をカットしました。)) |
| < | < | ||
| Set-Cookie: rtFa=I4phG2qFs+pUekvF4a03qJ0Pt79SUAzM3bLl5CMkZbgmODJDRjhFQjQtRTEzQi; | Set-Cookie: rtFa=I4phG2qFs+pUekvF4a03qJ0Pt79SUAzM3bLl5CMkZbgmODJDRjhFQjQtRTEzQi; | ||
| 行 155: | 行 159: | ||
| Set-Cookie: FedAuth=77u/ | Set-Cookie: FedAuth=77u/ | ||
| </ | </ | ||
| - | こちらの取得したcookieを次のリクエストを送信する際、Cookieヘッダーに追加します。 | + | こちらの取得したcookieを次のリクエストを送信する際、Cookieヘッダーに追加します。\\ |
| - | ===== Reference ===== | + | 以降のRESTサービスへのリクエストは、認証cookieさえあれば利用可能です。 |
| - | * [[http:// | + | |
| - | * [[https:// | + | |
| + | ==== 認証の流れ ==== | ||
| + | - ユーザーがSharePoint Onlineのサイトにアクセスしようとします。 | ||
| + | - ブラウザが、既にAzure ADで認証済みであるかを確認します。認証済みであれば、rtFaクッキーが送信されます。 | ||
| + | - SharePoint OnlineはrtFaクッキーを受け取り、これを基にユーザーのセッションを検証します。 | ||
| + | - 検証が成功すると、SharePoint Onlineは**FedAuthクッキー**を発行し、ブラウザに返します。 | ||
| + | - 以降、ブラウザはSharePoint OnlineへのリクエストにFedAuthクッキーを添付し、アクセスを継続します。 | ||
| + | |||
| + | ====== Reference ====== | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | ~~DISCUSSION~~ | ||