このトピックでは、Open Authorization (OAuth) 2.0 を使用して Web アプリケーションから Alibaba Cloud API にアクセスする方法について説明します。
前提条件
Web アプリケーションが作成されています。Web アプリケーションの名前、OAuth スコープ、およびコールバック URL が指定されています。詳細については、「アプリケーションを作成する」をご参照ください。Web アプリケーションの作成後、次の図に示すように、アプリケーションリストでアプリケーション ID (client_id) を表示できます。
説明Web アプリケーションは、Alibaba Cloud アカウント内の Alibaba Cloud リソースにアクセスできます。Web アプリケーションが他の Alibaba Cloud アカウントに属する Alibaba Cloud リソースにアクセスするようにするには、アプリケーションに必要な権限が付与されていることを確認してください。
Web アプリケーションのアプリケーションシークレットが作成されています。詳細については、「アプリケーションシークレットを作成する」をご参照ください。シークレットは、Web アプリケーションの作成時にのみ表示され、後続のクエリでは使用できません。後で使用するためにシークレットを保存することをお勧めします。
プロセス

ユーザーがブラウザを使用して Web アプリケーションにログインします。
Web アプリケーションは、ユーザーを Alibaba Cloud OAuth 2.0 サービスにリダイレクトし、アプリケーションの URL をブラウザに送信します。
説明ユーザーが Alibaba Cloud にログインしていない場合、Web アプリケーションはユーザーを Alibaba Cloud ログインページにリダイレクトします。
ユーザーは、ブラウザを使用して Alibaba Cloud OAuth 2.0 サービスにログインし、認証コードをリクエストします。
Alibaba Cloud OAuth 2.0 サービスはユーザーを Web アプリケーションにリダイレクトし、認証コードをブラウザに返します。
Web アプリケーションは、Alibaba Cloud OAuth 2.0 サービスからユーザーに対応するアクセストークンをリクエストします。リクエストには認証コードが必要です。
アクセストークンの取得方法の詳細については、「アクセストークンを取得する」をご参照ください。
新しいアクセストークンの取得方法の詳細については、「新しいアクセストークンを取得する」をご参照ください。
更新トークンを取り消す方法の詳細については、「更新トークンを取り消す」をご参照ください。
Alibaba Cloud OAuth 2.0 サービスは、取得したアクセストークンを Web アプリケーションに送信します。
Web アプリケーションは、アクセストークンを使用して Alibaba Cloud の API にアクセスします。
説明アクセストークンにはユーザーの ID 情報が含まれており、Web アプリケーションがユーザーのリソースにアクセスするために使用できます。
アクセストークンを取得する
手順 1: Web アプリケーションは、認証コードを取得するためにユーザーを Alibaba Cloud OAuth 2.0 サービスにリダイレクトします
認証コードを取得するためのエンドポイントは https://signin.alibabacloud.com/oauth2/v1/auth です。
次の表に、リクエストパラメータを示します。
パラメータ | 必須 | 説明 |
client_id | はい | Web アプリケーションの ID。 |
redirect_uri | はい | Web アプリケーションのリダイレクト Uniform Resource Identifier (URI)。 |
response_type | はい | レスポンスのタイプ。値を code に設定します。 |
scope | いいえ | OAuth スコープのスペース区切りリスト。このパラメータを空のままにすると、Web アプリケーションはすべてのスコープへのアクセスをリクエストします。 |
access_type | いいえ | Web アプリケーションのアクセスタイプ。有効な値:
デフォルト値:online。 |
state | いいえ | リクエストとレスポンスの両方で使用される値。クロスサイトリクエストフォージェリ (CSRF) 攻撃を防ぐため、または Web アプリケーションと Alibaba Cloud OAuth 2.0 サービス間の状態を保持するために、state パラメータを nonce として構成できます。このパラメータをランダムな文字列に設定すると、Alibaba Cloud OAuth 2.0 サービスは後で使用するためにレスポンスで state の値を返します。 |
prompt | いいえ | サーバーがユーザーに必要な権限を Web アプリケーションに付与するように求めるかどうかを指定します。 このパラメータを指定すると、ユーザーは Web アプリケーションに必要な権限を付与する必要があります。Alibaba Cloud アカウントが既に Web アプリケーションに必要な権限を付与している場合でも、ユーザーは Web アプリケーションに必要な権限を付与する必要があります。このパラメータを空のままにすると、Alibaba Cloud アカウントが Web アプリケーションを初めて使用するときに、Alibaba Cloud アカウントのみが Web アプリケーションに必要な権限を付与する必要があります。 値を |
リクエスト例:
https://signin.alibabacloud.com/oauth2/v1/auth?
client_id=123****&
redirect_uri=https://example.com/authcallback/&
response_type=code&
scope=openid /acs/ccc&
access_type=offline&
state=123456****次の表に、レスポンスパラメータを示します。
パラメータ | 説明 |
code | 認証コード。 |
state | リクエストの state パラメータの値。 |
レスポンス例:
GET HTTP/1.1 302 Found
Location: https://example.com/authcallback/?code=ABAFDGDFXYZW888&state=123456****手順 2: Web アプリケーションは認証コードを使用して、Alibaba Cloud OAuth 2.0 サービスからユーザーに対応するアクセストークンをリクエストします
アクセストークンをリクエストするためのエンドポイントは https://oauth.alibabacloud.com/v1/tokenです。
次の表に、リクエストパラメータを示します。
パラメータ | 必須 | 説明 |
code | はい | 手順 1 のレスポンスから取得した認証コード。 |
client_id | はい | Web アプリケーションの ID。 |
redirect_uri | はい | 認証コードの取得に使用される URI。リダイレクト URI は、手順 1 のリクエストのリダイレクト URI と同じである必要があります。 |
grant_type | はい | 値を authorization_code に設定します。 |
client_secret | はい | Web アプリケーションがアクセストークンをリクエストするときに Web アプリケーションを認証するために使用されるアプリケーションシークレット。 |
リクエスト例:
POST /v1/token HTTP/1.1
Host: oauth.alibabacloud.com
Content-Type: application/x-www-form-urlencoded
code=ABAFDGDFXYZW888&
client_id=123****&
client_secret=`your_client_secret`&
redirect_uri=https://example.com/authcallback/&
grant_type=authorization_code次の表に、レスポンスパラメータを示します。
パラメータ | 説明 |
access_token | 返されたアクセストークン。 Web アプリケーションはこのトークンを使用して Alibaba Cloud API にアクセスできます。 |
expires_in | アクセストークンの残りの有効期間。単位:秒。 |
token_type | アクセストークンのタイプ。有効な値:Bearer。 |
id_token | ID トークン。 値は JSON Web トークン (JWT) です。認証コードを取得するために開始されたリクエストの scope パラメータの値に openid が含まれている場合、ID トークンが返されます。 |
refresh_token | 更新トークン。 認証コードを取得するために開始されたリクエストで access_type パラメータが offline に設定されている場合、更新トークンが返されます。 |
scope | 取得した認証コードの実際の認証スコープ。 Web アプリケーションで要求される認可スコープが Web アプリケーションが scope パラメーターで指定された範囲にアクセスできない場合は、権限を再付与してください。権限を再付与するには、ステップ 1 で |
レスポンス例:
{
"access_token": "eyJraWQiOiJrMTIzNCIsImVu****",
"token_type": "Bearer",
"expires_in": "3600",
"refresh_token": "Ccx63VVeTn2dxV7ovXXfLtAqLLERA****",
"id_token": "eyJhbGciOiJIUzI1****",
"scope": "openid /acs/ccc"
}新しいアクセストークンを取得する
アクセストークンをリクエストするためのエンドポイントは、https://oauth.alibabacloud.com/v1/token です。
次の表にリクエストパラメータを示します。
パラメータ | 必須 | 説明 |
refresh_token | はい | 認証コードを使用して取得した更新トークン。 |
client_id | はい | Web アプリケーションの ID。 |
grant_type | はい | 値を refresh_token に設定します。 |
client_secret | いいえ | Web アプリケーションがアクセストークンをリクエストするときに Web アプリケーションを認証するために使用されるアプリケーションシークレット。 |
リクエスト例:
POST /v1/token HTTP/1.1
Host: oauth.alibabacloud.com
Content-Type: application/x-www-form-urlencoded
refresh_token=Ccx63VVeTn2dxV7ovXXfLtAqLLERAH1Bc&
client_id=123****&
client_secret=`your_client_secret`&
grant_type=refresh_token次の表にレスポンスパラメータを示します。
パラメータ | 説明 |
access_token | 新しいアクセストークン。Web アプリケーションはこのトークンを使用して Alibaba Cloud API にアクセスできます。 |
expires_in | アクセストークンの残りの有効期間。単位:秒。 |
token_type | アクセストークンのタイプ。有効な値:Bearer。 |
レスポンス例:
{
"access_token": "eyJraWQiOiJrMTIzNCIsImVu****",
"token_type": "Bearer",
"expires_in": "3600"
}更新トークンを取り消す
ユーザーが Web アプリケーションからログアウトしたり、Web アプリケーションからアカウントを削除したりする場合は、アプリケーションの更新トークンを取り消す必要があります。
リフレッシュトークンを取り消すためのエンドポイントは https://oauth.alibabacloud.com/v1/revoke です。
次の表に、リクエストパラメータを示します。
パラメータ | 必須 | 説明 |
token | はい | 取り消す更新トークン。 |
client_id | はい | Web アプリケーションの ID。 |
client_secret | いいえ | Web アプリケーションのシークレット。 |