OAuth 2.0 の「認可コードフロー」でアクセストークンを取得し、それをAPI呼び出し時に使う方式です。
アクセストークンの有効期限が切れた場合は、一定期間内であればリフレッシュトークンを使って再発行が可能です。
SeciossLinkではOAuth 2.0 に準拠した認証・認可をサポートしています。
以下のフローに対応しています:
- 認可コードグラント(Authorization Code Grant)
- RFC 6749, Section 4.1
- https://datatracker.ietf.org/doc/html/rfc6749#section-4.1
アクセストークンの取得、およびリフレッシュトークンによる再発行にも対応しています。
APIの認可サーバーは、RFC 8414 に準拠した Authorization Server Metadata に対応しており、以下のURLから確認することができます。
https://slink.secioss.com/service/oauth/.well-known/oauth-authorization-server
手順
①SeciossLink管理コンソール > システム > 接続アプリケーション > 接続アプリケーション登録 から以下を登録
| 項目 | 値 |
| アプリケーションID | 任意の値 |
| アプリケーション名 | 任意の値 |
| アプリケーション種類 | OAuthクライアント |
| クライアントシークレット | クライアント側のシークレット情報を登録 |
| リダイレクトURI | OAuthの応答を行うクライアント側のURLを指定 |
※画面保存時、自動生成される「クライアントID」は後の工程で利用するため、メモします。
②以下のURLにブラウザでアクセスし、SSOの認証を管理者IDでログイン
https://slink.secioss.com/service/oauth/authorize.php?client_id=<クライアントID>&response_type=code&redirect_uri=<リダイレクトURI>
※<リダイレクトURI>は接続アプリケーション登録時のURIでない場合、不正な認証リクエストと判断しSeciossLinkでエラーとして扱います。
③アプリケーションの利用同意
この認可フローを初めて行う時、同意画面が表示されます。同意は必ず必要になります。2回目以降の利用の場合、すでに同意されているため同意画面は表示されません。
④認可コード発行&リダイレクト
SeciossLinkでのユーザー認証が完了した後、管理画面で設定した「リダイレクトURI」の情報を使って、クエリストリングに認可コードを付与された状態でリダイレクトを実行します。
認可コードクエリストリング:code
※このときリダイレクトされるサーバーはお客様でご用意いただく、OAuth2.0 認可コードフローの要求を適切に処理できるサーバーを想定しております。
例)
リダイレクトURI「https://localhost/」とした場合、以下のやり方でリダイレクト時の情報の確認を行うことができます。アドレスバーのURLを確認し、SeciossLinkから払い出された認可コードをメモします。
code=xxxxx 部分が認可コードとなるのでメモをします。
※本来はサーバーで処理を行い、この認可コードを用いて、アクセストークン取得のエンドポイントへリクエストを発行します。
⑤アクセストークンの取得
# curl -X POST https://slink.secioss.com/service/oauth/token.php \
-F grant_type=authorization_code \ -F client_id=<クライアントID> \
-F client_secret=<クライアントシークレット> \
-F code=<code> \ -F redirect_uri=<リダイレクトURI>
レスポンス
{
"token_type": "Bearer",
"access_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"expires_in": 3600,
"scope": "provisioning",
"refresh_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
※②~⑤までの作業30秒以内に実施する必要があります。
ここまでの手順でアクセストークンの取得は完了となります。
以降のAPI操作では取得したアクセストークンを用いてAPIを実行します。
⑥ユーザ検索APIを実行(例)
#curl -sk https://slink.secioss.com/admin/api/ \
-H "Authorization: Bearer <⑤で取得したアクセストークン値>" \ -F action_user_read=true \
-F id=<ユーザーID@テナントID>
リフレッシュトークンを使用したアクセストークンの更新方法
アクセストークンの期限が切れた場合、アクセストークン取得時に同時に払い出されるリフレッシュトークンを利用してトークンのリフレッシュを行うことができます。
#curl -X POST https://slink.secioss.com/service/oauth/token.php \
-F grant_type=refresh_token \ -F client_id=<クライアントID> \
-F client_secret=<クライアントシークレット> \
-F refresh_token=<⑤で取得したリフレッシュトークン値>
※リフレッシュトークンの有効期限は 2592000秒 (30日)です。リフレッシュトークンそのものの有効期限を延長することはできず、それ以上は再度認可コードフローを経てアクセストークンを取得する必要があります。