3

私は、yeomanの最新のテンプレートを使用してASP.NET Core Angularアプリケーションを作成しました。私はIdentityServer4を実行しています。 IdentityServer4では、MVCアプリケーション用のクライアントを作成しました。ASP.NETコア角型アプリケーション(Angular Spaテンプレートを使用)でHomeControllerにAuthorizeタグを追加する

 // OpenID Connect implicit flow client (MVC) 
     new Client 
     { 
      ClientId = "mvc", 
      ClientName = "MVC Client", 
      AllowedGrantTypes = GrantTypes.Implicit, 

      RedirectUris = { "http://localhost:5002/signin-oidc" }, 
      PostLogoutRedirectUris = { "http://localhost:5002/signout-callback-oidc" }, 

      AllowedScopes = 
      { 
       IdentityServerConstants.StandardScopes.OpenId, 
       IdentityServerConstants.StandardScopes.Profile 
      } 
     } 

私はこれを設定するために、次のドキュメントを使用:私はホームコントローラに[承認]属性を追加しましたhttp://docs.identityserver.io/en/release/quickstarts/3_interactive_login.html
、すべてが動作しているようです。ホームコントローラがログインのためにIdentityServer4に即座にリダイレクトするため、ユーザは角度コードにアクセスできません。

私は、ハイブリッドの流れが私が上にセットアップしたものに関して何が混乱しているのですか? http://docs.identityserver.io/en/release/quickstarts/5_hybrid_and_api_access.html

ASP.NET Core Angularテンプレートを使用する予定なので、実際には簡単ですか?ちょうどクライアントとしてMVCアプリケーションを追加し、HomeControllerの上部にAuthorize属性を追加しますか?私は、なぜASP.NET Coreを利用できるのか、oidc-clientを使ってAngularですべてを設定するのは面倒なことだと思います。

ユーザーの役割が関与するとすぐにセットアップが失敗すると考えられます(ユーザーが何にアクセスできるか)。私はこれらの役割を教えるためにIdentityServer4に頼っていましたが、私はAngularでそれらにアクセスする必要があります。たぶんこれは私の質問に対する答えです...これはハイブリッドワークフローの目的ですか?ここで

は私のアプリが構成されている方法です。
MyApp.Web
MyApp.Api(角度が呼び出すAPIは、さらにIdentityServerためIdentityControllerを持っている)
MyApp.Auth(Identity Serverの)

誰かが私の質問で完全に混乱している場合は、IdentityServer4とASP.NET Core Angularアプリケーションを使用して認証/認可を設定するための良い方法を勧めることができれば非常に有益です。物事の.NETのコア側を利用するので、私はすべて純粋にクライアント上で行う必要はありません。

+1

__ユーザーの役割が関与するとすぐにセットアップが失敗すると信じています。権限が失効したりクッキーが削除されたり、角モジュールをロードできなくなったり、webapiにASP.NET Core Identityを(間違って)使用した場合は、Ajaxコールが終了します。 jsonや401(認証されていない)の代わりにHTML(ログインにリダイレクトされているため)の結果 – Tseng

+0

@Tsengだから私は何を提案していますか? Angularを通じて認証全体を書く方が良いでしょうか?あなたの役割がどのようにAngularに送信されるかについて、私に手がかりをつけてください...それは主張ですか? –

+0

クライアント側のファイルを保護するのは難しいことです。 TBH私はあなたの "webapi"アクションと残りのサービスの背後にあるコードでロジックと検証が行われるべきであるため、ホームコントローラを一切保護しないと言っています。したがって、単に/ apiのURLを保護し、アプリケーションがロードされるとログインフォームを追加して、ユーザに署名し、ベアラトークン(あなたまでのjwtまたは不透明トークン)を取得します。または、あなたがそのままにしておきたい場合は、定期的なログインを行い、jwt/bearerアクセス​​トークンを更新するためのトークンエンドポイントを公開してください。 – Tseng

答えて

0

.NET Coreの側面を利用しているため、クライアント上ですべての認証を行う必要はありません。 - あなたはすでに正しい方向にいると思います。 Hybridのフローを使用すると、クライアントがブラウザ上でアクセスできなくなり、リフレッシュトークンのパワーを使用してWeb APIをより安全にすることができるため、トークンのセキュリティが強化されます。

クライアントでoidc-clientライブラリを使用する必要はありません!あなたがまだ立ち往生している場合は、私はいくつかのコードを投稿することができますお知らせください。

関連する問題