1

ビルドした複数のアプリケーションに対して中央認証サーバーを作成する必要がありますが、その特定のアプリケーションに固有の役割とクレームは引き続きあります。マイクロソフトによるさまざまなサービスを使用した類推を説明しましょう。クライアント特有の要求クレデンシャルserver4 asp.netコアIDを使用

私はMicrosoftアカウントにサインアップするため、認証情報は中央サーバーに保存されます。今私はアカウントを使用してログインし、私はaccount.microsoft.comに着陸する新しいスタートを前提としています。今、私はmsdnをクリックしてサインインします。それは認証サーバー上のログインページと、同意画面とmsdnに戻ります私はxboxに行き、同じことをする。現在、MDSNとXBOXは2つの全く異なるアプリケーションで、それぞれ独自のApi、Webアプリケーション、モバイルアプリを持っていますが、同じ認証サーバーを使用しています。

今まで私はIdentity Frameworkを使用して独立したアプリケーションを作成していましたが、かなり快適でしたが、これまでのことよりもはるかに複雑です。私はIdentityServer4を使って中央の認証サーバーを探しており、公式のdocサイトにあるすべてのチュートリアルを完了しています。そのため、概念の基本的な考え方があります。

私が必要とするのは、各アプリケーションが他のアプリケーションに関する知識を持っていなくても独自の役割と要求を指定できるようにすることです。また、中央サーバーは外部認証を有効にします。中央サーバのコアアイデンティティ

現在のアーキテクチャ

  1. 中央Identity Serverの(IdentityServer4、ASP.NETコアアイデンティティ、Entity Frameworkのを使用して)、中央サーバの
  2. 一つの中央DB
  3. 複数のアプリケーションセット(API、MVCアプリケーション、Xamarinモバイルアプリ)
  4. つまたは複数のDB私は必要性につき

物事として各アプリケーションのための今

  1. デシベルに格納されているユーザの請求を取得するアイデンティティリソースをカスタマイズしますが、私は1つの役割を追加した場合、それはAPIのリソースとクライアント
のカウントとして繰り返し私に何回も役割を返すまで達成することができ私は

  1. ストア私の心に、アプリケーション固有のDBにおける主張と役割を思い付いたが、私はこれらの問題
      01直面するであろうことを推測

      代替ソリューション

    • まず、中央サーバからIDを取得してから、アプリケーション固有のDBから申し立てを取得する必要がありますので、authロジックを配線するには多大な労力を要します。
    • どのように私がaspを使って行うことができるかわかりません。中央の認証サーバーにクライアント側
    • 未使用のテーブルの上にネットアイデンティティ
    • アプリケーション間で認証ロジックの重複

これらのスタックオーバーフローに関する質問は、ほとんどの最も近くを取得しますが、正確なソリューション

正しい方向に私を取る任意のガイダンスは

EDIT#1を助ける:それは誰かがオフトピックとして、この質問にフラグを立てたように思えるので、ちょうど私が探していますことを明確にしたいですアイデンティティ・サーバー4とasp.netのコア・アイデンティティを使用し、いくつかの推奨事項ではない特定のコード/ソリューションについては、答え以外のガイダンスはより明確な理解と理解のために歓迎されますが、コードだけで十分です。コミュニティのガイドライン。

EDIT#2

@ travis.jsによって示唆されているように私は、クライアント側で認証を行ってみましたが、私はどのように私は、クライアント側の主張に[承認(役割=「管理者」)]のようなものを実装するのです理解することができません
+0

今までに試したことと、あなたのコードでどのような問題が発生しているのかを指定する必要がありますか?詳細については、Idsrv4のマニュアルを参照することができます。 – Rohit

+0

@Rohit私は今まで達成できることを書いています。すなわち、アイデンティティーリソースをカスタマイズしてデータベースに格納されたユーザークレームを取得しますが、それは私にAPIリソースとクライアントの数として繰り返し役割を返すことと、各アプリケーションが必要なことは、他のアプリケーションについての知識も全く持たずに、自分自身の役割と要求のセットを指定できることです公式文書のすべてのチュートリアルを完了し、githubコードファイルのすべての文書を読むことを書いた –

+0

クライアントごとにスコープを定義しましたか?どのタイプの認証モードを使用していますか? – Rohit

答えて

1

あなたの代替ソリューションは「正しい」ものだと思います。

あなたの懸念への対処:

あまりにも多くの努力配線アップ認証ロジック、それが第1の中央サーバから IDを取得し、 アプリケーション固有のDB

からのクレームを取得する必要がありますよう

私にはちょうどいい努力をしているようですね。セントラルサーバーは認証を行い、各アプリケーションは独自の承認を行います。

ない私はあなたが本当にクライアント/アプリ側でASP.NETのアイデンティティを必要としないクライアント側

にasp.netのIDを使用してそれを行うことができますどのようにしてください。 IDは中央サーバーによって処理されます。中央の認証サーバ

非問題について

未使用のテーブル。しかし、あなたはまだそのマクロのレベルで意図した目的のためにそのテーブルを使用することができます。認証ロジックの

重複アプリケーション

全体でこれはロジックの重複のような音はありません。セントラルサーバはアイデンティティ/認証を行い、各アプリケーションは独自の認証ロジックを決定します。

+0

私はクライアント側での承認を提案したが、クライアント側で[Authorize(Roles = "Admin")]のようにクレームを実装する方法を理解できません –

+0

"ロール"クレームを含める必要がありますあなたのIdentityClaimsリスト/テーブル –

+0

私はIDサーバープロジェクトのためにデータベースにクレームを入れて、それはすべてのクライアントに共通し、すべてのトークンがすべてのクライアントに対してすべてのクレームを持っていて、クライアントごとにこれを行う方法を理解する –

関連する問題