登場人物として、User(ユーザ)、Consumer、Service Providerの3つがある。
ConumserとService Providerは、事前に信頼関係を構築する必要がある(OpenID仕様みたいに、だれとでも認証連携できるものではない)。
【アクセス権限の設定1】
①ユーザ(ブラウザを使用)は、Consumerに対してサービスを要求する。
②ConsumerのWebsiteでは、Service Providerに対して未認可のRequest Tokenを要求する。Service Providerは、未認可のRequest Tokenを作成し、Consumerに返す。
③Consumerは、Service Providerにユーザをリダイレクトさせる。このとき、未認可のRequest Tokenを送付する。
【アクセス権限の設定2】
①ユーザは、Service Providerと認証する。このとき、未認可のRequest Tokenも送付する。
②ユーザは、Consumerに対し、Service Providerで管理するサービスへのアクセス権限を与える。
③Service Providerは、ユーザをConsumerにリダイレクトさせる。このとき、認可済みRequest Tokenも送付する。
【アクセス権限の委譲】
①ユーザは、Service ProviderからConsumerにリダイレクトされる。
②Consumerは、Service Providerに対して、認可済みRequest TokenをもとにAccess Tokenを要求する。
③Service Providerは、ユーザがConsumerに対してアクセス権限を委譲したかをチェックし、Access Tokenを返す。このとき、Request TokenがAccess Tokenになる。
④Consumerは、Access Tokenを使用してService Providerに対してサービスを要求する。
■未認可のRequest Tokenの内容
(1)リクエスト
Parameter Name | Description |
---|---|
oauth_consumer_key | Service Providerにおいて、Consumerと信頼関係を結ぶ際に生成されるConsumerの一意な識別子。 |
oauth_signature_method | ConsumerがRequest Token(リクエスト)を署名する際に使用する署名アルゴリズム。すべてのRequest Token(リクエスト)は、Consumerによって署名され、Service Providerによって署名検証されなけらばならない。OAuthでは以下の署名アルゴリズムをサポートしている。 HMAC-SHA1, RSA-SHA1, and PLAINTEXT. |
oauth_signature | 上記の署名アルゴリズムによって作成された署名データ。Service ProviderがRequest Token(リクエスト)を検証するために使用する。 |
oauth_timestamp | Request Token(リクエスト)のタイムスタンプ。 |
oauth_nonce | Consumerが作成した一意なランダム文字列。リプライ攻撃を防ぐために使用される。 |
oauth_version | OAuth 仕様のバージョン(オプション)。 |
Parameter Name | Description |
---|---|
oauth_token | Request Tokenのデータ。 |
oauth_token_secret | ConsumerがRequest Tokenを検証するために使用する秘密情報。 |
■認可済みRequest Tokenの内容
Parameter Name | Description |
---|---|
oauth_token | 認可済みRequest Tokenのデータ。 |
oauth_callback | ユーザがアクセス権限を委譲した後にリダイレクトされるConsumerのURL。 |
■Access Tokenの内容
(1)リクエスト
Parameter Name | Description |
---|---|
oauth_consumer_key | Service Providerにおいて、Consumerと信頼関係を結ぶ際に生成されるConsumerの一意な識別子。 |
oauth_token | Request Tokenのデータ。 |
oauth_signature_method | ConsumerがRequest Token(リクエスト)を署名する際に使用する署名アルゴリズム。すべてのAccess Token(リクエスト)は、Consumerによって署名され、Service Providerによって署名検証されなけらばならない。OAuthでは以下の署名アルゴリズムをサポートしている。 HMAC-SHA1, RSA-SHA1, and PLAINTEXT. |
oauth_signature | 上記の署名アルゴリズムによって作成された署名データ。Service ProviderがRequest Token(リクエスト)を検証するために使用する。 |
oauth_timestamp | Access Token(リクエスト)のタイムスタンプ。 |
oauth_nonce | Consumerが作成した一意なランダム文字列。リプライ攻撃を防ぐために使用される。 |
oauth_version | OAuth 仕様のバージョン(オプション)。 |
Parameter Name | Description |
---|---|
oauth_token | Access Tokenのデータ。 |
oauth_token_secret | ConsumerがAccess Tokenを検証するために使用する秘密情報。 |