2016-05-06 15 views
0

私はIdentityServer3で使用するためのWeb APIを開発しています。IdentityServer3でサインインする方法は?

は、私は、サーバーとWeb APIを実行しているが、私は、ユーザーがサーバーへのモバイルアプリからログイン持っている方法を考え出す問題を抱えています。

私の質問はこれです:私は、アイデンティティ・サーバーに対して有効に暗黙の流れを持っている場合、どのようにユーザーが認証が成功すると、そのトークンを受信するシオマネキのようなツールからサインインできますか?

私はトークンエンドポイントがあることを知っている:

https://myidservername/identity/connect/token

私も承認endpoingがあることを知っている: https://myidservername/identity/connect/authorization

しかし、ここでユーザーがサインインできますか?ユーザーがユーザー名とパスワードを渡してトークンを受け取れるように自分のビューを作成する必要がありますか?具体的には、私の質問は、私がユーザーに表示しなければならない専用ビューからではなく、フィドラーからサインインする方法です。

+0

すでにドキュメントを読んで、すでに3つのチュートリアルを完了しています... IDサーバーのチュートリアルを私に送信しないでください。私はOAuth 2.0とOpen ID Connect 1.0をまだ慣れていないので、私はすべてを理解していないと告白しますが、サインインプロセスを知る必要があります。今、認証サーバーのコントローラにauthorize属性を追加すると、サインイン画面が表示されますが、サーバーに証明書をRESTfulな方法で渡す方法はわかりません。ありがとう! – cloudstrifebro

答えて

3

IdentityServerはオールインワンのOpenID + OAuth 2実装です。このため、暗黙のフローは、authorize認証ポイントとトークン発行プロセスの間のブリッジとしてIdentityServer自体で完全に処理されます。

暗黙の流れの性質は、このような(より正確には、直接Webページをレンダリングすることはできませんクライアント)フィドラーとして、クライアントが認証することはできません。私は、Web API/IdentityServerシナリオでOAuthの暗黙の補助金の段階を再現しようとする理由 をさらに理解するために:

クライアントが保護されたリソースのエンドポイントにアクセスしようとする
  1. (例えばAuthorizeで飾られたWeb APIコントローラ)
  2. フレームワークチェックユーザ(例えばAuthorizationヘッダをチェックし、その内容を検証する)トークンを検証することによって認証された場合
  3. ユーザが認証されていない場合、フレームワークは次いで、401の状態コード
  4. クライアントで応答Autにトークンを要求しなければならないブラウザウィンドウを使用して権限付与エンドポイントに移動することによって、サーバ(IdSrv3)を監視することができます。
  5. ユーザーが自分の資格情報を挿入すると、認証サーバーはそれらを検証し、有効な場合は、発行された証明書を含むリダイレクトで応答します(モバイルアプリケーションでWebView/を作成し、モバイルアプリケーションでポップアップを開くなど)。クエリ文字列内のトークン(またはハッシュ後)
  6. クライアントは、リダイレクト応答を受信して​​、URI
  7. からトークンを抽出し、クライアントできるようになりましたリソースサーバへの認証要求(ウェブAPI)
を送信

あなたが見ることができるように、あなたは本質的にログをレンダリングすることができないクライアントを認証する方法がありませんクライアントのこれらのクラスのために手順4で返されたページにリソースの所有者の資格フローは、よりよい解決策かもしれません。

あなたは(あなたがどのように見つけるためにthis tutorialに従うことができる)IdentityServer構成内のクライアントのために、このような助成金を有効にする必要があり、その後、passwordproviding all other required parametersgrant_typeを設定トークンエンドポイントの要求を作ります。

+0

答えをくれてありがとう、フェデリコ。パラメータを見た後、どこにgrant_typeを置くのですか?私はフィドラーでこれをするだろうか? 認証:基本abcxyz(これはユーザ名かパスワードですか?) grant_type = password& redirect_uri = https://myapp.com/callback(認証後にアイデンティティサーバがユーザをリダイレクトするコールバックです私はこの参照に行ってきましたが、まだそれをすべて取得していません。ありがとう。 – cloudstrifebro

+1

はい、Content-Typeヘッダーとして 'application/x-www-form-urlencoded'を使用して、' grant_type'とその他のパラメータをリクエスト本体に配置する必要があります。例については、[この回答](http://stackoverflow.com/a/36385278/3670737)をチェックしてください。 –

+0

うわー、その答えは非常に有用でした。ちょうど私が探していたもの。ありがとうフェデリコ! – cloudstrifebro

関連する問題