2017-02-10 16 views
0

OpenID Connectの暗黙フローは主にシングルページアプリケーション(SPA)で使用されていると考えられますが、おそらくバックエンド/ APIへの最初のアクセスはAJAXコールではなくを使用して行われます。OpenID Connect暗黙のフロー:リダイレクトを使用して応答しますか?

トークンなしでリクエストが送信されたことをAPIが検出した場合、どのように応答する必要がありますか?

IMHOリダイレクトで応答するのはあまり意味がありません。これは、ブラウザウィンドウ全体ではなく、AJAXリクエストがリダイレクトされるためです(これは必要です)。

ですので、401という回答はありますか?または、何をすべきかの別の(より良い)方法がありますか? 401が正常であると仮定すると、サーバは何らかのアイデンティティプロバイダを使用するかどうか、またはこれをクライアントに完全に通知する必要があり、バックエンドはクライアントが信頼するアイデンティティプロバイダを知ることをクライアントに想定します。

答えて

1

RFC6749は、応答の設計方法を示していません。

ただし、クライアントがAPI応答を期待するため、リソースサーバーは適切なHTTPコードと応答本文を含むAPI応答を送信する必要があります。

トークンが有効期限切れまたは無効なためにリソースサーバーが要求を拒否した場合、応答コードは400にする必要があります。 アクセストークンが有効範囲で発行されていない場合、またはリソース所有者がリソースの方法に関する

HTTP/1.1 403 OK 
Content-Type: application/json;charset=UTF-8 
Cache-Control: no-store 
Pragma: no-cache 
{ 
    "error":"insufficient_scope", 
    "error_description":"The scope 'WRITE' is required.", 
    "error_uri":"https%3A%2F%2Fwww.example.com%2Fdoc%2Ferror403%2Finsufficient_scope" 
} 

:NOトークンが見つからない場合、コードは、コードが401

体が明細書に記載されたエラー応答と同様とすることができるべきであり、403 でなければなりませんどのIdPを使用するかを示します。私はを知っていますがありますが、現時点ではクライアントがリソースサーバーとどのように対話するかを指定する必要があります(例:ドキュメンテーション)。

関連する問題