2016-11-14 8 views
0

私はIDサーバー4をセットアップする必要があるアプリケーションで作業しています。私はリソースとしてAPIを持っています。クライアントとしてのWebフォームアプリケーションです。私は、教師、学生、私のデータベースの親のような役割はほとんどありません。このカスタムデータベースを使用して、IDを使用せずに認証と承認を実行するにはどうすればよいですか?アイデンティティサーバー4のロールを持つカスタムデータベースを使用

お勧めします。

答えて

2

他の質問からhere私はあなたが望むものの良いアイデアを得る。

あなたが望むもののための1つの解決策は、独自の別個のデータベースを持つ独立したプロジェクトでidentityserver4をセットアップすることです。私はidentityserver3というタグに気づいたが、identityserver4に行くのはかなり安全だと思う。概念的には互換性があるので、クライアント/ユーザーには違いはありません。

1)アプリケーションを識別し、リソースAPIへのアクセスを許可するために、アプリケーションにクライアント/シークレット(identityserverで設定する)を指定します。ここにいくつかの情報があります:http://docs.identityserver.io/en/dev/quickstarts/1_client_credentials.html

外部からリソースを保護するためにクライアントを1つ設定する必要があります。リソースAPIにアクセスする唯一の方法は、アプリケーションが実際の呼び出しを行っているので、アプリケーションを通して行うことです。これは欠点でもあり、トークンを外部に公開することはできません。

お客様のクライアントは実際のユーザーではないため、そのユーザーを特定する必要があります。現在のモデルに基づいて任意のメカニズムを使用できます。シンプルなユーザー/パス(asp.net IDの有無にかかわらず)は、役割を決定するのに十分である可能性があります。しかし、あなたのアプリケーションは、リソースAPIへの完全なアクセス権を持っていることに注意してください。

2)しかし、identityserverが利用可能なので、なぜそれを使用しないのですか?なぜあなたはアイデンティティモデルを使いたくないのですか?アイデンティティ情報とデータモデルを分離することを検討すべきだと思います。あなたのデータモデルはセキュリティを認識すべきではありません。セキュリティはデータモデルとは何の関係もありません。

アイデンティティ・サーバーのための別個のデータベースを作成する場合、IDユーザーを構成する1つの場所があります。必要なのは、データモデル内のユーザへの参照(サブ)です。 http://docs.identityserver.io/en/dev/quickstarts/2_resource_owner_passwords.html

すべてのクレームや役割を追加すると、すべてが整っており、カスタムデータベースにIDデータを保存する必要はありません。カスタムデータベースの構造は、ユーザーテーブルを含むがアイデンティティデータは保持されません。

私はこれがより安全な解決策であり、優れたドキュメントとサンプルプロジェクトを考えると、より迅速な解決策になるかもしれません。

関連する問題