2011年11月30日水曜日

OAuth1.0のプロトコルを勉強する

OAuth1.0の流れは以下になる。
登場人物として、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_keyService Providerにおいて、Consumerと信頼関係を結ぶ際に生成されるConsumerの一意な識別子。
oauth_signature_methodConsumerがRequest Token(リクエスト)を署名する際に使用する署名アルゴリズム。すべてのRequest Token(リクエスト)は、Consumerによって署名され、Service Providerによって署名検証されなけらばならない。OAuthでは以下の署名アルゴリズムをサポートしている。
 HMAC-SHA1, RSA-SHA1, and PLAINTEXT.
oauth_signature上記の署名アルゴリズムによって作成された署名データ。Service ProviderがRequest Token(リクエスト)を検証するために使用する。
oauth_timestampRequest Token(リクエスト)のタイムスタンプ。
oauth_nonceConsumerが作成した一意なランダム文字列。リプライ攻撃を防ぐために使用される。
oauth_versionOAuth 仕様のバージョン(オプション)。
(2)レスポンス
Parameter Name Description 
oauth_tokenRequest Tokenのデータ。
oauth_token_secretConsumerがRequest Tokenを検証するために使用する秘密情報。

■認可済みRequest Tokenの内容
Parameter Name Description 
oauth_token認可済みRequest Tokenのデータ。
oauth_callbackユーザがアクセス権限を委譲した後にリダイレクトされるConsumerのURL。

■Access Tokenの内容
(1)リクエスト
Parameter Name Description 
oauth_consumer_keyService Providerにおいて、Consumerと信頼関係を結ぶ際に生成されるConsumerの一意な識別子。
oauth_tokenRequest Tokenのデータ。
oauth_signature_methodConsumerがRequest Token(リクエスト)を署名する際に使用する署名アルゴリズム。すべてのAccess Token(リクエスト)は、Consumerによって署名され、Service Providerによって署名検証されなけらばならない。OAuthでは以下の署名アルゴリズムをサポートしている。
 HMAC-SHA1, RSA-SHA1, and PLAINTEXT.
oauth_signature上記の署名アルゴリズムによって作成された署名データ。Service ProviderがRequest Token(リクエスト)を検証するために使用する。
oauth_timestampAccess Token(リクエスト)のタイムスタンプ。
oauth_nonceConsumerが作成した一意なランダム文字列。リプライ攻撃を防ぐために使用される。
oauth_version OAuth 仕様のバージョン(オプション)。
(2)レスポンス
Parameter Name Description 
oauth_tokenAccess Tokenのデータ。 
oauth_token_secretConsumerがAccess Tokenを検証するために使用する秘密情報。 

0 件のコメント: