Classic/VPC環境で利用できます。
登録した Application Single Sign-Onに連携する方法を説明します。Single Sign-Onで提供する連携 APIを通じて連携します。Single Sign-Onの連携 APIが提供する機能は次の通りです。
- Single Sign-Onの連携 APIを使用する前に、OAuth 2.0に関する主な概念を Single Sign-Oneとはで確認することをお勧めします。
- ここでは、Single Sign-Onの連携時使用する APIのみ説明します。NAVERクラウドプラットフォームの Single Sign-Onが提供する全体 APIに関する説明は、Single Sign-On APIガイドをご参照ください。
権限付与
Resource Ownerと相互作用し、保護されているリソースにアクセスする権限を付与されるために必要な APIについて説明します。
リクエスト
Clientが保護されているリソースにアクセスできるように IDPに送信するリクエストは次の通りです。
GET /tenants/{Tenant Id or Alias}/oauth2/authorize
-
リクエスト Path
パラメータ名 タイプ 要否 制約事項 説明 Tenant Id or AliasString 必須 - Tenant作成時に発行された Tenant IDまたは Tenant Alias -
リクエストパラメータ
パラメータ名 タイプ 要否 制約事項 説明 response_typeString 必須 codeまたはtokenAuthorization Codeまたは Implicitフロー進行時に必要な値 client_idString 必須 - Applicationの登録時に発行された Client ID redirect_uriString 必須 Applicationの登録時に入力した Redirect URIと必ず一致 権限付与完了後に遷移されるページの URL scopeString 必須 - アクセス可能範囲。追加範囲をリクエストするには、一つ以上の範囲値を空白で区分して含める。 stateString 選択 - CSRFを防御するための任意の値。state権限付与完了後、stateを含めて redirect_uriに入力したページに遷移code_challengeString 選択 - PKCEの適用時に必要な code_challengeの値 code_challenge_methodString 選択 plainまたはS256PKCEの適用時に必要な Code Challenge Methodの値
例は次の通りです。
-
response_typeがcodeの場合GET /tenants/{Tenant Id or Alias}/oauth2/authorize?client_id=${Client Id}&scope=${Scope}&response_type=code&redirect_uri=${Redirect URI}&state=${State} HTTP/1.1 Host: sso.ncloud.com -
code_challengeとcode_challenge_methodを追加して権限付与をリクエストした場合GET /tenants/{Tenant Id or Alias}/oauth2/authorize?client_id=${Client Id}&scope=${Scope}&response_type=code&redirect_uri=${Redirect URI}&state=${State}&code_challenge=${Code Challenge}&code_challenge_method=${Code Challenge Method} HTTP/1.1 Host: sso.ncloud.com -
response_typeがtokenの場合GET /tenants/{Tenant Id or Alias}/oauth2/authorize?client_id=${Client Id}&scope=${Scope}&response_type=token&redirect_uri=${Redirect URI}&state=${State} HTTP/1.1 Host: sso.ncloud.com
レスポンス
リクエストに対するレスポンスは次の通りです。
-
response_typeがcodeの場合HTTP/1.1 302 Found Location: {Redirect URI} ?code=${Authorization code} &state=${State}パラメータ名 タイプ 要否 制約事項 説明 redirect_uriString 必須 リクエスト時に含めた redirect_uri権限付与完了後に遷移されるページの URL codeString 必須 流出の危険を防ぐために、1分後に有効期限切れ IDPで作成した Authorization code stateString 選択 - Clientがリクエストした値 -
response_typeがtokenの場合HTTP/1.1 302 Found Location: {Redirect URI} ?access_token={Access Token} &token_type=Bearer &expires_in={Access Token Expire Date} &state={State}パラメータ名 タイプ 要否 制約事項 説明 redirect_uriString 必須 リクエスト時に含めた redirect_uri権限付与完了後に遷移されるページの URL access_tokenString 必須 - 権限が付与された Access Token expires_inNumber 必須 - Access Tokenの有効期間 stateString 選択 - Clientがリクエストした値
Tokenの発行
アクセス権限付与後、資格証明のための Tokenの発行に必要な APIについて説明します。
リクエスト
権限付与後、または Refresh Tokenを使用して Access Tokenや ID Tokenの発行のために送信するリクエストは次の通りです。
POST /tenants/{Tenant Id or Alias}/oauth2/token
-
リクエスト Path
パラメータ名 タイプ 要否 制約事項 説明 Tenant Id or AliasString 必須 - Tenant作成時に発行された Tenant IDまたは Tenant Alias -
リクエストヘッダ
ヘッダ名 タイプ 要否 制約事項 説明 AuthorizationString 必須 Basic Base64 ({Client Id}:{Client Secret})Client識別子 Content-TypeString 必須 application/x-www-form-urlencodedリソースのメディアタイプ -
リクエストパラメータ
パラメータ名 タイプ 要否 制約事項 説明 grant_typeString 必須 authorization_codeまたはrefresh_tokenTokenの返却方式 codeString 選択 grant_typeがauthorization_codeの場合に使用IDPが送信した Authorization code redirect_uriString 選択 grant_typeがauthorization_codeの場合に使用権限付与リクエスト時に含めた redirect_uriscopeString 選択 grant_typeがrefresh_tokenの場合に使用修正する scopecode_verifierString 選択 grant_typeがauthorization_codeの場合に使用されます。過去に付与したscopeの範囲と同じかそれ以下である必要があります権限付与リクエスト時に含めた code_challenge,code_challenge_methodに対応する値
例は次の通りです。
-
権限付与後に Authorization codeを含めて Access Tokenの発行をリクエストする場合
POST /tenants/{Tenant Id or Alias}/oauth2/token HTTP/1.1 Host: sso.ncloud.com Authorization: Basic Base64(${Client Id}:${Client Secret}) Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&code=${Authorization code}&redirect_uri=${Redirect URI} -
権限付与後に Access Tokenの発行リクエストに
code_verifierが含まれている場合POST /tenants/{Tenant Id or Alias}/oauth2/token HTTP/1.1 Host: sso.ncloud.com Authorization: Basic Base64(${Client Id}:${Client Secret}) Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&code=${Authorization code}&redirect_uri=${Redirect URI}&code_verifier=${Code Verifier} -
Refresh Tokenで Access Tokenの発行をリクエストする場合
POST /tenants/{Tenant Id or Alias}/oauth2/token HTTP/1.1 Host: sso.ncloud.com Authorization: Basic Base64(${Client Id}:${Client Secret}) Content-Type: application/x-www-form-urlencoded grant_type=refresh_token&refresh_token=${Refresh Token}&scope=${Scope}
レスポンス
リクエストに対するレスポンスは次の通りです。
{
"access_token": "String",
"token_type": "Bearer",
"expires_in": "Number",
"refresh_token": "String"
}
| パラメータ名 | タイプ | 要否 | 制約事項 | 説明 |
|---|---|---|---|---|
access_token |
String | 必須 | - | 権限が付与された Access Token |
token_type |
String | 必須 | Bearer | Tokenの形式 |
expires_in |
Number | 必須 | - | Access Tokenの有効期間 |
refresh_token |
String | 必須 | - | Access Token発行時に使用される Refresh Tokenの値 |
Tokenのキャンセル
Access Tokenまたは Refresh Tokenをキャンセルする時に必要な APIについて説明します。
リクエスト
Access Tokenまたは Refresh Tokenをキャンセルするために送信するリクエストは次の通りです。
POST /tenants/{Tenant Id or Alias}/oauth2/revoke
-
リクエスト Path
パラメータ名 タイプ 要否 制約事項 説明 Tenant Id or AliasString 必須 - Tenant作成時に発行された Tenant IDまたは Tenant Alias -
リクエストヘッダ
ヘッダ名 タイプ 要否 制約事項 説明 AuthorizationString 必須 Basic Base64 ({Client Id}:{Client Secret})Client識別子 Content-TypeString 必須 application/x-www-form-urlencodedリソースのメディアタイプ -
リクエストパラメータ
パラメータ名 タイプ 要否 制約事項 説明 tokenString 必須 - キャンセルしたい Token token_type_hintString 必須 access_tokenまたはrefresh_tokenキャンセルしたい Tokenのタイプ
レスポンス
リクエストに対するレスポンスは次の通りです。
{
"status": "ok"
}
認証されたユーザーのクレーム返却
認証されたユーザーに対してのクレームを返却するために必要な APIについて説明します。
リクエスト
ユーザーのクレームを返却するために送信するリクエストは、次の通りです。
POST /tenants/{Tenant Id or Alias}/oauth2/userinfo
-
リクエスト Path
パラメータ名 タイプ 要否 制約事項 説明 Tenant Id or AliasString 必須 - Tenant作成時に発行された Tenant IDまたは Tenant Alias -
リクエストヘッダ
ヘッダ名 タイプ 要否 制約事項 説明 AuthorizationString 必須 Bearer {AccessToken}Client識別子
レスポンス
リクエストに対するレスポンスは次の通りです。
{
"sub" : "String",
"id_no" : "String",
"user_type" : "String",
"user_id": "String",
"user_name" : "String",
"mbr_no" : "Number"
"groups" : "List"
}
| パラメータ名 | タイプ | 要否 | 制約事項 | 説明 |
|---|---|---|---|---|
sub |
String | 必須 | - | Subject(end-user)識別子 |
id_no |
String | 必須 | - | NAVERクラウドプラットフォームで使用されるユーザー識別子 |
user_type |
String | 必須 | Customerまたは Sub |
ユーザータイプ |
user_id |
String | 必須 | - | ログイン ID |
user_name |
String | 必須 | - | ユーザー名 |
mbr_no |
Number | 必須 | - | ユーザーの会員番号 |
groups |
List | 選択 | - | user_typeがSubの場合、subAccountが属したグループ名リスト |
ID Token署名キーの返却
ID Tokenの署名に使用される公開キーを返却する際に必要な APIについて説明します。
リクエスト
ID Tokenの署名に使用される公開キーを返却するために送信するリクエストは次の通りです。
GET /tenants/{Tenant Id or Alias}/oauth2/jwks
-
リクエスト Path
パラメータ名 タイプ 要否 制約事項 説明 Tenant Id or AliasString 必須 - Tenant作成時に発行された Tenant IDまたは Tenant Alias
レスポンス
リクエストに対するレスポンスは次の通りです。
{
"keys" : [ {
"kty" : "String",
"e" : "String",
"kid" : "String",
"n" : "String"
} ]
}
| パラメータ名 | タイプ | 要否 | 制約事項 | 説明 |
|---|---|---|---|---|
kty |
String | 必須 | - | IETF Datatrackerの Key Typeを参照 |
e |
String | 必須 | - | IETF Datatrackerの RSA Exponentを参照 |
kid |
String | 必須 | - | IETF Datatrackerの Key IDを参照 |
n |
String | 必須 | - | IETF Datatrackerの RSA Modulusを参照 |
Endpoint
APIの Endpointは次の通りです。
| Endpoint | URI Path | 説明 |
|---|---|---|
| Authorization Endpoint | /tenants/{Tenant Id or Alias}/oauth2/authorize |
Clientが Resource Ownerと相互作用して保護されているリソースにアクセスできる権限付与リクエスト |
| Token Endpoint | /tenants/{Tenant Id or Alias}/oauth2/token |
アクセス権限または Refresh Tokenを通じて Access Token、ID Tokenを発行 |
| Token Revocation Endpoint | /tenants/{Tenant Id or Alias}/oauth2/revoke |
Access Tokenまたは Refresh Tokenをキャンセル |
| User Info Endpoint | /tenants/{Tenant Id or Alias}/oauth2/userinfo |
認証されたユーザーに対するクレーム返却 |