2016-05-23 2 views
0

私は、ef 6に格納されているMicrosoft IDを使用してID server3を設定しています。 /トークンエンドポイントで「ログイン」できますが、/ userinfoにアクセスしようとすると、 。 私は/トークンログインにスコープを追加しようとすると動作しません。 は、クライアントを編集してスコープを追加しようとしましたが、依然としてスタックしていません。 クライアントはリソース所有者フローです。 ユーザーの名前と役割を取得できるように、userinfoを取得するだけで済みます。無効スコープエラーのためにcanotを呼び出す

1)どのような範囲Iは、ユーザー情報のエンドポイントにアクセスする必要がありますか?私はすべての私の試みに不十分な範囲を取得します。 2)SQLデータベースとコードを編集してクライアントのスコープを増やすことはできますが、動作していないようです。それをデバッグする方法?

また、私はasp.netアイデンティティを使用して、トークン、クライアント、スコープと秘密を格納するためにIDサーバーefを使用していますが、私はしようとしていますが、それは正しいとは確信していません。テーブルが作成されましたが、トークンが発行されたにもかかわらず、トークンテーブルイベントに行が表示されません。私は現在、2つのデータベースを持っています:1つはトークン/クライアント/スコープのもの、もう1つはaspnetのユーザーとロールです。 このデータベースを作成する必要はありますか?それは私の問題の一部のように見えます

は、クライアント、スコープと関連データを保存するために、エンティティフレームワークを使用するためのアイデンティティ・サーバーのサンプルです。 スコープやスコープのクレームやクライアントのリストに欠けている項目があるようですので、スコープのパラメータでログインしようとすると、スコープのテーブルで行が見つからないときに拒否されます。

....この問題を解決する方法に取り組んでおり、私はそれが働いて得る希望はスコープがスコープの主張が必要な​​の?私がその情報を見つけることができるかどうかを知る必要があります。

答えて

0

「openid」の有効範囲がドキュメントの通りです。 https://identityserver.github.io/Documentation/docsv2/endpoints/userinfo.html

+0

これはちょっと助けてもまだまだ私を抱きしめてしまいました。トークンリクエストで動作するようにスコープが開かれましたが、ユーザー情報エンドポイントでサブジェクトIDが返されたため、スコープに「役割」を追加しようとしました/トークンでログインできない、無効なスコープエラー。 – figuerres

+0

ログを有効にしてチェックします。すべてのエラーが含まれているため、問題をデバッグして診断することができます。 –

+0

私は問題を解決し、できるだけ早く答えを投稿します。ソースデバッグは、何が起こっているかをトレースするのに役立ちました。 – figuerres

0

疑いで、私はただのGithubから現在のソースコードをダウンロードして、ブレークポイントを適用するのではなく、Nugetパッケージを使用して。

ちょうどメモリから行く(これは完全に正確ではないかもしれません)。

私はUserInfoEndpointがUserService.GetProfileDataAsyncへの呼び出しを行うと信じています。 UserInfoEndpointはスコープを受け入れますが、GetProfileDataAsyncは要求を "RequestedClaimTypes"としてのみ受け入れます。その間のどこかで、スコープをエンドポイントに送信し、スコープ内にあるすべてのクレームタイプのリストを取得します。

ここで留意すべき最も重要なことは、UserInfoEndpointに渡すスコープがIDスコープでなければならないことです。エンドポイントはリソーススコープに属するクレームを返さない。だから簡単に説明

...

  1. サーバーが受信スコープ
  2. をUserInfoEndpointために送られたスコープを受け取るには、それだけに見えるに割り当てられているアイデンティティスコープ
  3. 検索要求の種類でIDスコープ
  4. 要求タイプのリストをGetProfileDataAsyncに "context.RequestedClaimTypes"として渡します。
  5. この時点で、カスタムロジックはRequestedClaimTypesがIssuedClaimsにどのように変換されるかを決定します。

私の推測では、リソーススコープをUserInfoEndpointに渡していると思います。

0

ようやく私の問題は、固定得たもの: 私は私のSQLデータベースに多くのスコープを必要と、アイデンティティ・サーバーのサンプルが期待する同じスコープ項目のいくつかを持っていなかったエンティティフレームワークを使用して、v3のIDサーバのサンプル、これは作っていましたログイントークンコールが無効なスコープで失敗します。 スコープとクライアントのためにC#コードを編集して、必要なものを取得して削除し、SQLテーブルを再作成してから作業を開始しました。 また、私たちのアプリが必要とする非標準的な主張に追加する新しい範囲と範囲の主張を追加しました。

私はロジックに従うことができ、それが動作しなかった場所を見ることができたので、本当に助けとなるデバッグを可能にするソースを添付しました。それは大きな助けとなりました。 実際の問題であったサンプルがソースに投稿できるかどうかは、後ほど見ていきます。 標準のuserinfo/profileのクレームをどのように動作させるかについてのガイドがあれば良いかもしれません。私はそれを得たが、それはまた、IDサーバが店舗に情報を取得するためにどのように呼び出すのかを見るためのデバッグのソースだったので、タップインする方法と呼び出し元に戻すデータを与える方法を理解できる。

結論として、サンプルにはスコープとクレームのセットが少なくとも1か所で異なることが重要な問題です。

残りは、スコープとスコープの主張を使用して、アプリケーションのニーズに応じてユーザー情報エンドポイントに追加する方法を学習しています。

関連する問題