web-dev-qa-db-ja.com

Identity Server 4 + Identity Framework + Reactフロントエンド

このような環境を適切に組み合わせる方法についてのアドバイスを探しています。たくさんの情報とクイックスタートで取り上げるべきたくさんの資料がありますが、私は3日間の試行錯誤の後でかなり迷っています。私は.NET FrameworkのIdentity Frameworkに精通していますが、これまでIdentity Serverを使用したことがありません。

NodeおよびMySql ... MySqlクラスター内の独自のdbノードと通信するDockerコンテナー内の一連のサービスで構築されたマイクロサービスセットアップがあります。単一の管理UIが構築されていますReact&Redux-AWSバケットから実行されます。

このReact Identity Serverを使用したフロントエンドの認証を任されています。APIで認証を行うことはありません。NETCoreで認証UIを構築することをお勧めしますIdentity Framework。必要なものはすべて「そのまま」使用できるためです。

最終的に、2つのIdentityアプリは、これらのAPIに対して作成されたすべてのアプリケーションのSSOになります。さらに、社内のユーザーが手動で認証せずに通過できるように、ある時点でADを組み込む必要があります。

私たちが必要とするもの(私は思う)は次のとおりです。

  • 独自のコンテナで実行されているIdentity Server 4
  • 独自のコンテナーで実行されているCore Identity MVCアプリ
  • 認証にフロントエンドでoidc-clientを使用します

これまでに行ったことは、次の2つのチュートリアルに従います。

http://docs.identityserver.io/en/release/quickstarts/6_aspnet_identity.html#new-project-for-asp-net-identity

http://docs.identityserver.io/en/dev/quickstarts/7_javascript_client.html

私の結果は、実行中のIdentity ServerとIdentity Core MVCアプリが同じプロジェクト(2つの異なるポート)で一緒に実行されていることです。JSクライアントチュートリアルを実行すると、サンプルコードが実行されます。これにより、MVCログインにリダイレクトされ、Identityに対して認証されます。サーバーは、この結果を返します。

{
  "sid": "8e60eb65960d967834cb3eb4fdcbbd49",
  "sub": "dfc90bd1-cad4-45d0-84bd-174e8a6ca891",
  "auth_time": 1516296631,
  "idp": "local",
  "amr": [
    "pwd"
  ],
  "preferred_username": "[email protected]",
  "name": "[email protected]"
}

ログアウトのクリックは失敗しますが、これは、最初のチュートリアルのコントローラーの例に、JavaScriptClientの例に埋め込まれたコントローラーの例のように、ログアウト用のGETが含まれていないためです。

どこかへ行ったような気がするが、同時に、自分の知らないことが完全にわかるようになった。アドバイスを使用したり、正しいクイックスタートへのポインターを使用して、私が探しているものを達成することができます。

7
Tsar Bomba

基本設定私が理想的に読んだ内容に基づいて、あなたがしたいことはそれを3つのコンポーネントに分解することです

  • アイデンティティ管理コンポーネント
  • APIコンポーネント
  • MVC/MVVMコンポーネント

Identity Managementコンポーネントの場合、このクイックスタートを例として使用します ASPNetIdentity + IS4 EF または EFコンポーネントなしのこれ

APIは、ID4サーバーで発生するすべての認証と登録でのみ承認(認証ではなく)である必要があります。

チュートリアルに従って、フロントエンド(MVVMまたはMVCクライアント)をすべてのベルとホイッスルでID4サーバーに登録する必要があります。

これにより、アプリケーションのフロントエンドを分離しながら、安全なAPI、単一のIdentityManagementソース(基本的には真のSSO /フェデレーテッドゲートウェイになるようにビルド)を使用できるようになります。

お役に立てれば。

追加情報:

答えに加えて、反応のためにOIDCクライアント用に使用(または自分で構築)できるライブラリがあり、フロントエンドに配置して、結果をより迅速に達成できます。

参考に私はangular + AspCoreIdentityを使用したid4 + AspCore APIを使用しています。実行する必要があるのは、JavaScriptクライアントとID4の間のリンクを作成することだけです(チュートリアルおよびID4とWeb APIに従って)。 angular内のoidc-connectのライブラリ。ID4サーバーとWeb APIの設定を行います。

これの美しさは、ID4で基本的なセットアップを行うと、より高度な機能のためにそれを構築する必要がほとんどなくなることです。

これらは別個のコンポーネントであり、それとまったく同じように扱うことに注意してください。混乱と知識の欠如を助けてくれました。

WindowsおよびADログイン(将来の状態):

これらのコンポーネントを分離しておくと、APIまたはフロントエンドアプリに変更を加えることなく、ADをID4サーバーに非常に簡単かつ迅速に統合できます。 Windowsログインを利用する例 ここ

5
Aeseir