このトピックでは、マシンツーマシン (M2M) アプリケーションの AK フリーアクセスを構成し、Alibaba Cloud Resource Access Management (RAM) を使用してセキュリティトークンサービス (STS) トークンを取得する方法について説明します。
前提条件
M2M アプリケーションを構成済みであること。詳細については、「M2M アプリケーション (マシンツーマシン権限管理)」をご参照ください。
OIDC IdP の作成
RAM 管理者として RAM コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[ロールベース SSO] タブで、[OIDC] タブをクリックし、[ID プロバイダーの作成] をクリックします。
[ID プロバイダーの作成] ページで、ID プロバイダー情報を構成します。
パラメーター
説明
ID プロバイダー名
名前は、同じ Alibaba Cloud アカウント内で一意である必要があります。これは IDaaS とは無関係です。RAM のルールに従って名前を入力します。
発行者 URL
Issuer URL は、外部 ID プロバイダー (IdP) が M2M アプリケーションに割り当てる一意の識別子です。OAuth 2.0 などのプロトコルでトークンソースを検証するために使用されます。
Alibaba Cloud IDaaS はこの URL を使用して、外部 IdP が発行するトークンの有効性を検証します。これは、IDaaS M2M アプリケーション (クライアント) の [Issuer] フィールドで構成されます。
検証用指紋
[Issuer URL] を入力した後、[指紋の取得] をクリックします。Alibaba Cloud は自動的に検証用の指紋を計算します。ただし、ローカルでも計算し、Alibaba Cloud からの指紋と比較する必要があります。詳細については、「OpenSSL を使用して OIDC IdP の指紋を取得する」をご参照ください。
一致しない場合、Issuer URL が攻撃を受けている可能性があります。URL を確認し、正しい指紋を入力する必要があります。RAM は、入力した Issuer アドレスにアクセスして指紋を取得します。
説明IdP が証明書のローテーションをスケジュールしている場合は、ローテーションの前に新しい証明書の指紋を生成し、OIDC IdP 情報に追加します。証明書をローテーションする前に、少なくとも 1 日待機します。新しい証明書で STS トークンを取得できることを確認した後、古い指紋を削除します。
クライアント ID
クライアント ID は、アプリケーションが外部 IdP に登録されるときに生成される一意の識別子です。外部 IdP が OpenID Connect (OIDC) トークンを発行すると、このクライアント ID が使用され、トークンの `aud` フィールドにこの ID が含まれます。Alibaba Cloud OIDC IdP でこのクライアント ID を構成すると、OIDC トークンが STS トークンと交換されるときに、システムは `aud` フィールドのクライアント ID が一致するかどうかをチェックします。これにより、安全なロールの偽装が保証されます。
単一の OIDC IdP は最大 50 個のクライアント ID をサポートします。これは、複数のアプリケーションが Alibaba Cloud にアクセスするシナリオに適しています。
M2M アプリケーションシナリオでは、クライアント ID は IDaaS M2M アプリケーションで構成された [Audience Identifier] に対応します。サーバー間認証に使用されます。
最も早い発行時間の制限
この時刻より前に発行された OIDC トークンは、STS トークンと交換できません。デフォルト値: 12 時間。有効値: 1〜168 時間。
備考
ID プロバイダーの説明。
[ID プロバイダーの作成] をクリックします。
OIDC IdP ロールの作成
Alibaba Cloud Resource Access Management コンソールに移動し、 を選択します。

エディターページで、次の図に示すように [ID プロバイダー] を追加します。

[エンティティの追加] ダイアログボックスで、作成した [ID プロバイダー] を選択し、[OK] をクリックします。

ID プロバイダーを追加すると、デフォルトで `iss` および `aud` 条件が生成されます。これらの条件を編集または削除したり、新しい条件を追加したりできます。

次の例は、
sub条件式を追加する方法を示しています。編集が完了したら、[OK] をクリックします。説明[条件値]: 作成した M2M アプリケーションサーバーの [client_id] を入力します。M2M アプリケーションの追加方法や、オーディエンス識別子などの情報の表示方法の詳細については、「M2M アプリケーション (マシンツーマシン権限管理)」をご参照ください。
条件付きの式の詳細については、「アクセスポリシーの基本要素」をご参照ください。
現在、RAM OIDC は oidc:iss、oidc:aud、oidc:sub の 3 つの条件のみをサポートしています。

下部にある [OK] をクリックします。[ロールの作成] ダイアログボックスで、ロールの名前を入力し、[OK] をクリックします。

ロールに権限を付与する
[権限の追加] をクリックして、ロールに権限を付与できます。

M2M トークンの取得
curl コマンドの使用
次のプレースホルダーパラメーターをアプリケーションの構成に置き換えます。次に、curl コマンドを実行してトークンを取得します。
# <YOUR_SERVER_ISSUER_ENDPOINT>、<YOUR_APP_CLIENT_ID>、<YOUR_APP_CLIENT_SECRET>、<YOUR_SERVER_AUD_IDENTIFIER> を M2M アプリケーションの実際の構成値に置き換えます。 # # <YOUR_SERVER_ISSUER_ENDPOINT>: 発行者。「リソースサーバーアプリケーション > 一般構成 > 発行者」でエンドポイントを表示して置き換えます。 # <YOUR_APP_CLIENT_ID>: クライアント ID。「クライアントアプリケーション > 一般構成 > 認証情報管理」で client_id を表示して置き換えます。 # <YOUR_APP_CLIENT_SECRET>: クライアントシークレット。「クライアントアプリケーション > 一般構成 > 認証情報管理」で client_secret を表示して置き換えます。 # <YOUR_SERVER_AUD_IDENTIFIER>: サーバーオーディエンス識別子。「リソースサーバーアプリケーション > サーバーサイド権限付与 > 権限アプリケーション > オーディエンス識別子」でオーディエンス識別子を見つけて置き換えます。 # curl --location --request POST 'https://<YOUR_SERVER_ISSUER_ENDPOINT>.aliyunidaas.com/api/v2/iauths_system/oauth2/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'client_id=<YOUR_APP_CLIENT_ID>' \ --data-urlencode 'client_secret=<YOUR_APP_CLIENT_SECRET>' \ --data-urlencode 'grant_type=client_credentials' \ # .all は、Alibaba Cloud IDaaS プラットフォームで事前定義されたスコープ識別子です。指定されたオーディエンスの下で利用可能なすべての権限をリクエストすることを示します。 --data-urlencode 'scope=<YOUR_SERVER_AUD_IDENTIFIER>|.all'トークンが正常に取得された場合、応答は次の出力のようになります。

Postman の使用
次の図に示すように、パラメーターをアプリケーションの構成に置き換えます。次に、Postman からリクエストを送信してトークンを取得します。

M2M トークンを使用した RAM ロールの一時的な認証情報 (セキュリティトークンサービス トークン) の取得
Alibaba Cloud STS に慣れていない場合は、「STS とは」をご参照ください。
OpenAPI の使用
OpenAPI Portal に移動し、AssumeRoleWithOIDC API を見つけます。
説明このトピックでは、認証情報を取得する方法のみを説明します。AssumeRoleWithOIDC API の詳細については、「AssumeRoleWithOIDC - OIDC ロールベース SSO のロールを偽装するための一時的な認証情報を取得する」をご参照ください。
必要な API パラメーターを入力します。パラメーターが正しいことを確認したら、[呼び出しの開始] をクリックして STS トークンを取得します。
重要OIDCProviderArn: 作成した OIDC IdP ロールの [基本情報] ページに移動し、[信頼ポリシー] から ARN を取得します。
RoleArn: 作成した OIDC IdP ロールの [基本情報] ページに移動し、[ARN] を取得します。
OIDCToken: 取得した M2M トークンを入力します。
RoleSessionName: ロールセッションのカスタム名。このパラメーターは識別のみに使用され、その他の要件はありません。