OAuth 2.0 を使用して、組織内の保護されたリソースに対する委譲されたセキュアなアクセス権をアプリケーションに付与できるようにします。VMware Cloud Services は、アプリケーション ユーザーが認証する Web アプリケーション アクセスと、アクセス トークンがアプリケーションに直接発行されるサーバ間の相互通信をサポートします。

OAuth 2.0 とは

OAuth 2.0 は、リソースへの安全なアクセス権をアプリケーションに付与するための認証プロトコルです。クライアントは、アクセス トークンを介して認証されます。アクセス トークンにはスコープが設定され、トークンがアクセスできるリソースが定義されます。OAuth 2.0 に関する詳細については、https://tools.ietf.org/html/rfc6749#page-8で OAuth の仕様を参照するか、https://aaronparecki.com/oauth-2-simplified/で「OAuth 2.0 Simplified」という題名のブログ投稿を参照してください。

OAuth 2.0 と VMware Cloud Services との連携

VMware Cloud Services では、client credentialsauthorization codeauthorization code による public client などの異なる許可タイプを利用するアプリ認証のユースケースをカバーしています。目的に応じて、各認証タイプ(サーバ間アプリケーション、Web アプリケーション、ネイティブ/モバイル アプリケーション)に対応する 3 タイプの OAuth アプリケーションのいずれかを作成するとができます。

あるユーザーが VMware Cloud on AWS へのアクセス権を持つ組織の所有者だとします。このユーザーが株の取引を支援するアプリケーションを開発しました。アプリケーション Trading 1.0 を呼び出します。vCenter Server によって管理されている仮想マシン上でアプリケーションを実行するには、まず VMware Cloud on AWS API を使用してアプリケーションを認証する必要があります。

  1. VMware Cloud Services で OAuth 2.0 アプリケーションを作成します。これは Trading 1.0 アプリケーションを登録する方法の 1 つです。[組織の表示] > [OAuth アプリケーション] メニューで [アプリケーションの作成] をクリックしてアプリケーションの作成を開始し、一連の手順を実行します。プロセスの最後で、API を使用してクライアントを識別するためのアプリケーション ID およびアプリケーション シークレットの形式でクライアント認証を発行します。これらの認証情報をスクリプトに貼り付けます。
  2. アプリケーションは組織内で作成されますが、組織へのアクセス権はまだ付与されません。アクセス権を付与するには、組織に追加します。これにより、アプリケーションの作成時に定義した組織のサービスとリソースにアプリケーションがアクセスできるようになります。この手順は、サーバ間アプリケーション タイプのアプリケーションの場合のみ必要です。Web アプリケーションやネイティブ/モバイル アプリケーションには適用されません。
  3. Trading 1.0 クライアント アプリケーションを実行すると、アプリケーションは認証サーバからアクセス トークンを要求します。認証されると、認証サーバはアクセス トークンを API に送信し、クライアントはアクセスを許可されます。

OAuth アプリケーションを作成および管理可能なユーザー

組織の所有者または開発者ロールを持つ組織のメンバーは、OAuth アプリケーションを作成および管理することができます。

アプリケーション シークレットの再生成

組織の所有者は、組織内の OAuth アプリケーションのアプリケーション シークレットを再生成できます。これは、OAuth アプリケーションを作成した組織の所有者が退職などで企業に所属しなくなり、アプリケーションを引き続き実行する必要がある場合に便利です。

OAuth アプリケーションの代わりに API トークン認証を使用

OAuth アプリケーションの代わりに API トークン認証を使用できます。API によって、ユーザーが認証プロセスで認証されたエンティティであることが義務付けられている場合は、API トークンを代わりに使用する必要があります。OAuth アプリケーションと API トークンを使用する場合について確認するには、OAuth アプリと API の違いを参照してください。