2016-09-22 27 views
0

データストアとしてASP.NET IDを持つASP.NETコアでIdentityServer 4を使用する予定です。IdentityServer 4とスコープ固有のユーザー設定

名前、役割などのクレームを持つユーザーと、これらのユーザーに許可するWeb API(スコープ)があるとします。このユーザーは、次の質問を解決するために、ハードウェアデバイスからの測定値へのアクセス。 IdentityServerでは既知のユーザーを認証できますが、どのユーザーがどのデバイスデータにアクセスできるかを知るアクセス制御が必要になります。

この情報はどこに保存しますか?私はそれがIdentityServersストアに格納されるべきではないと思う範囲に固有なので。一方、スコープ独自のデータベースに格納すると、IdentityServersストアで定義されたユーザーに接続する必要があります。すべてのスコープとIdentityServerに固有のユーザーIDを定義する必要がありますか?

答えて

1

IdentiyServerが返すユーザーIDをスコープのデータベースで定義されたユーザーと相関させる必要があります。

ユーザーごとに異なるログインを追跡できるUserテーブルとUserLoginテーブルがあると思います。

次に、スコープのデータベースで、どのユーザーがどのデバイスデータにアクセスできるかを指定できます。

1

これは悪い考えであり、あなたがするべきではない道を導くでしょう。

これは、スコープを要求しているクライアントアプリケーションがIDPからトークンを要求する前でも、どのユーザーがどのスコープにアクセスできるかを知る必要があることを意味します(そうしないとトークン要求は機能しません)。これらをユーザーの主張としてモデル化してください。 WebApiでは、通常のクレームベースの承認を行うことができます。

+0

ご回答いただきありがとうございます。私はあなたが説明している問題をかなり理解していません。私はそれがこのように動作すると仮定しました:ユーザーはブラウザをログインページに向け、資格情報を入力します。ログインページは、IdentityServerを使用してユーザーを認証し、トークンを戻し、開始ページにリダイレクトされます。開始ページはWebApi(トークンを渡す)を使用して、アクセス可能なすべてのデバイスを列挙します。このコンセプトに間違っているものは何ですか? – NicolasR

+1

スコープとは、クライアントではなく、アクセスしたいリソースを定義するクレームです。 「どのユーザーがどのデバイスデータにアクセスできるかを知るアクセスコントロールが必要です」(わかっているとおり)は、リソースベースの認証質問に変換されます。リソース(この場合、リソースはデバイスデータ)に基づいてアクセス制御を行いたい場合 リソースベースの認証に関する公式ドキュメント: https://docs.asp.net/en/latest/security/authorization/resourcebased .html は、それについてのブログを書いています: http://lutando.net/2016/10/authorization-assertions-on-resources-in-asp-net-core/ – Lutando

+0

グレートブログ記事!私はそれについて考える必要があります。より早く簡単な実装では、ASP.NET IDと、デバイスに関連付けられたロール(グループ)を作成しました。グループに参加していたユーザーは、関連するデバイスのデータを表示できました。しかし、そこにはユーザー、ロール、デバイス定義がすべてデータベースに入っていたので簡単でした。 – NicolasR

関連する問題