を呼び出すためにJWTベアラートークンを作成し、私はASP.NETコアのWeb APIを構築しています(app.UseJwtBearerAuthentication
経由確保)のAzure ADによって確保されますASP.NETコアMVC認証ユーザーし、Web API
私は、WebAPIと呼ぶASP.NET Core MVCコントローラ(app.UseOpenIdConnectAuthentication
によって保護されています)を構築しています。
OpenID Connect Basicクライアント実装者のガイドに記載されているように、認証フローを実装しようとしています。
このパターンのサンプルコードです。
一例はここにある:
/active-directory-dotnet-webapp-webapi-openidconnect/blob/master/TodoListWebApp/App_Start/Startup.Auth.cs)
が使用されています.NET(.NETコア)OWINです。
OnAuthorizationCodeReceived
メソッドを使用し、AcquireTokenByAuthorizationCodeAsynch
に電話して、WebAPIへのリクエストで使用するトークンを取得します。
私はASP.NET MVCコアの類似パターンを構築しようとした際、私は以下を参照してください。
- 私はMVCのアプリを設定する場合。
UseOpenIdConnectAuthentication
をデフォルトに設定すると、システムにログインできますが、認証コードが返ってくることはありません。私のために発生するイベントは、上記のAuthorizationCodeReceived
イベントの代わりにOnTokenValidated
イベントです。それはアイデンティティとトークンを持っています。これは素晴らしいことです。 - MVCのアプリケーションを設定するとき。
UseOpenIdConnectAuthentication
response-type = “code”
、コードが返ってくると、OnAuthorizationCodeReceived
イベントが発生しますが、IDは返されません。
[のために私のazureアプリケーションマニフェストが設定されました。この場合、ユーザーの認証とトークンの生成は1ステップに圧縮されているため、必要なだけ安全ではないため、私はfalseに設定します。]
さらに調査した結果、Asp.Net Coreインフラストラクチャは、複数の独立した認証ミドルウェアのエントリを処理するように設計されており、
Microsoft.AspNetCore.Authentication.JwtBearer/JwtBearerHandler.cs
ことは、あなたがしようとした場合「許可されていません」というエラーをスローするようにコーディングされていますを使用するワークフローはJwtBearerとなります。
したがって、私はその複数のミドルウェアアプローチに従わなければならないようです。ログイン用のCookieベースのミドルウェア1つと、このアプリケーションにリンクされたサービスにアクセスするためのベアラトークン用のベアラトークンベースのミドルウェア1つ。
https://docs.asp.net/en/latest/security/authorization/limitingidentitybyscheme.htmlに記載されている
この機能(複数の認証ミドルウェア)(代わりに、サービスへの呼び出し認証コードを受信した後に行われるOWINサンプルからモデル)誰でも例を持っていこのため?それとも私はまだこの間違ったことを考えていますか?
トピックを共有することはありますか?私はほぼ同じことをやろうとしており、ASP.Net Coreを使ってこのトピックのサンプルを見つけることはできません。 – zuckerthoben