Identityサービスは、さまざまなタイプのトークンをサポートします およびフォーマット ユーザーが特定のRackspaceTechnologyCloudサービスに対して認証できるようにするため。
- トークンタイプ ユーザーがプロビジョニングされているかフェデレーションされているかを指定します。
- トークン形式 トークン自体の構成を指定します。
Identityは、認証トークンの形式をUUIDからAuthenticated Encryption(AE)に切り替えました。 Rackspaceのエンジニアは、Identityシステムのバックエンドに新しいトークン形式を実装しました。この変更によるRackspaceの顧客への影響は最小限です。主な違いは、Identityサービスによって返される認証トークン値のパターンと長さが以前に発行されたUUIDトークン値とは異なることです。
注: 特にSDKまたはCLIツールを使用してRackspaceCloudと対話する場合は、認証トークンを処理するためのベストプラクティス(この記事のさらに下にあります)に必ず従ってください。
この記事では、2つの異なるトークン形式について説明し、認証トークンを一般的に操作するためのベストプラクティスを提供します。
AEトークンとは何ですか?
認証付き暗号化を使用すると、AEトークンが生成されます。認証付き暗号化は、他の人がメッセージを偽造、変更、または読み取ることができないようにメッセージを保護する方法を指定します。
認証付き暗号化は非永続的を生成します ユーザー認証用のトークン。 AEトークンには、このデータを指す代わりに、特定のトークンが有効かどうかを判断するために必要なすべてのデータが含まれています。 AEトークンには、tokenitself内にすべての暗号化されたメタデータがあります。 AEトークンには関連するすべてのデータが含まれているため、トークンを永続ストレージに保存するものはありません。サーバーはトークンを受信すると、トークンメタデータを解析して、トークンが有効かどうかを判断できます。
暗号化のため、AE形式のトークンのサイズは異なります。 Identityサービスは、AE形式のトークンのサイズを250バイトに制限します。
次の例は、AEトークンIDを持つauthenticationresponseからのトークンオブジェクトを示しています。
"token": {
"id": "ABCDEF7RbnU-LLWJ1J8PeHRGMz2Cf3rPUG_a25hQRWTcL7tH231H7ubr6y1EkRi_curq6PqJV-pCiIADZrwFtCexcy9MVO3eckgGWqDqnxvXaUMF7XA_reFwwp3pNu_7p9uXofGmiueccwrA",
"expires": "2015-08-20T23:51:19.055Z",
"tenant": {
"id": "123456",
"name": "123456"
}
UUIDトークンとは何ですか?
UUIDトークン形式を使用する認証トークンは永続的です トークン。ユーザーが正常に認証されると、Identityサービスは32文字のUUIDトークン値を生成し、それをバックエンドの永続ストレージユニットに保存します。このサービスは、有効期限のタイムスタンプ、トークンの発行先など、そのトークンに関するメタデータも保存します。次に、サービスはトークン値をユーザーに返します。ユーザーは、IDを確認するためのRackspaceCloudservicesへの後続のリクエストにトークン値を含めることができます。
ユーザーがトークンを使用してリクエストを送信すると、IDサービスは、永続ストレージに保存されているデータに対してトークン値を検証し、ユーザーが操作の実行を許可されていることを確認します。 UUIDトークンの有効期限が切れると、ユーザーは再認証する必要があります。次に、Identity Serviceは新しいトークンを発行し、有効期限が切れたトークンを永続的なバックエンドストレージユニットから削除します。
次の例は、UUIDトークンIDを持つauthenticationresponseからのトークンオブジェクトを示しています。
"token": {
"id": "b726839ca0fd4d9ead8edbb73f123456",
"expires": "2015-08-20T23:48:50.793Z",
"tenant": {
"id": "123456",
"name": "123456"
}
UUIDトークンとAEトークンの違いは何ですか?
UUIDトークンとAEトークンは、永続性、長さ、およびストレージが異なります。
- UUIDトークンは永続的です 。 AEトークンは非永続的です 。 aUUIDトークンを使用すると、認証時にトークンを受け取ります。そのトークンはバックエンドストレージに24時間保持され、トークンの有効期限が切れるまで、認証するたびにシステムは同じ値を返します。 AEtokensの場合、値は永続的ではありません。つまり、値はバックエンドに保存されず、Identity Serviceは、ユーザーが認証するたびに新しいトークン値を生成して返します。
- UUIDトークンの長さは32文字です。 AEトークンのサイズはさまざまですが、Identityサービスの場合は250バイトの制限があります。2AEトークンの実装では、認証時に返されるトークン値が、IdentityサービスがUUIDトークンを発行したときに返される値よりも大幅に長いことに気付くでしょう。
- システムは、認証用のメタデータを使用してUUIDトークンをIdentityServiceバックエンドに保存します。 AEトークンは、暗号化されたトークン値内に必要な認証メタデータを提供します。 IdentityサービスはAEトークン値をバックエンドシステムに保存しません。
以下は、認証トークンを処理するためのいくつかのベストプラクティスです。
-
Identity Serviceに対して認証するときは、返されたトークン値を必ずキャッシュしてください。
Identityサービスは、操作を完了する前に、すべてのAPIリクエストで認証トークンを検証します。 API操作を最適化し、システム負荷を軽減するには、認証トークンを安全なキャッシュまたはデータベースに保存します。これにより、アプリケーションは、各API操作の前に認証要求を発行する必要がなく、保存された値を使用できます。キャッシュされたトークン値は、有効である限り再利用できます。
注: SDKを使用してクレデンシャルをキャッシュする例については、php-opencloudドキュメントのクレデンシャルのキャッシュを参照してください。
-
401 Unauthorized
を受信した後に再認証するようにアプリケーションを設計する サービスエンドポイントからの{.code}応答、またはトークンの有効期限を確認し、トークンの有効期限が切れる前に再認証します。 -
認証、クレデンシャル、およびトークン管理を簡素化するには、OpenStackコマンドラインクライアントアプリケーションを使用します。
詳細については、IdentityAPI2.0ガイドの「認証トークンの管理」セクションを参照してください。
コメントや質問をするには、[フィードバック]タブを使用します。また、私たちと会話を始めることができます。