2017-08-30 29 views
0

oauth2暗黙のフロー応答をどのように処理するかはわかりません。私はangular4を使ってSPAを作成しました。限り、私は私がリクエストを作成する必要が取得することができてきたように見える:私は取得するのは非常ない何OAuth2:暗黙のフローからaccess_tokenフラグメントを抽出してください。

GET /authorize? 
    response_type=token& 
    client_id=s6BhdRkqt3& 
    state=xyz& 
    redirect_uri=<<uri-located-into-SPA>> 

すると、応答を処理する方法です。応答は、以前に指定されたredirect_uriクエリパラメータへのリダイレクトです。

だから、
HTTP/1.1 302 Found 
Location: <<uri-located-into-SPA>>#access_token=2YotnFZFEjr1zCsicMWpAA& 
    state=xyz& 
    token_type=example& 
    expires_in=3600 

、どのように私はaccess_tokenとどの<を抽出するために<<uri-located-into-SPA>>を実装する必要があります>私は設定する必要がありますでしょうか?

答えて

1

(例えば/auth/oauth2用)リダイレクトURIは、現在のブラウザのURLのparse the hash partは、(のsessionStorage、のlocalStorageまたはいくつかの、いくつかの角度サービスまたはストア)どこaccess_token値を保存するコンポーネントにマッピングされなければなりません。各バックエンドリクエストとともにアクセストークンを送信する場合は、新しいAngular HttpClient APIからHttpInterceptorを作成してそこに追加します。

アクセストークンが期限切れになる前に更新する場合は、アクセストークンをリフレッシュするためのタイムアウト機能を設定する必要があります(非表示のiframeprompt=none URLパラメータを使用)。

コンポーネントには実際のビューは必要ありません。処理が終了したら、既存のアプリケーションコンポーネント(初期ビューまたは認証前に要求されたビュー)へのルートを変更するだけです。

+0

テンプレートを指定せずにコンポーネントを作成しましたが、このエラーが発生しました。「コンポーネントDBoxOAuthComponentに対してテンプレートが指定されていません。テンプレートなしでコンポーネントを作成することは可能ですか? – Jordi

+0

恐らくあなたはそれをすることはできませんが、空のテンプレートを作成することもできますし、「しばらくお待ちください...」などの単純なコンテンツを作成することもできます。 –

+0

私はコンポーネントをテストするためにURLを構築する方法をあまり分かりません。つまり、すべてのルートに 'localhost:3002 /#/ {login | app ...} 'のような'# 'シンボルがあります。私はこの '# 'がなぜ現われるのか決して分かりませんでした。しかし、コンポーネントをテストするために、 'access_token'フラグメントをurlに入れる必要があります。私は 'localhost:3002 /#/ oauth#access_token = 234'を試しましたが、動作しません。何か案は? – Jordi

関連する問題