2017-02-24 15 views
0

VS2015を使用してASP.NET MVC Core(1.1.0)アプリケーションを作成しました。ダイアログボックスでAzure ADに接続するオプションを選択したので、VSは定型コードを生成し、予想どおりに私の仕事は&の学校アカウントでログインできるMicrosoftのログインページにリダイレクトされます。Azure Active Directoryを使用してユーザーを認証した後にコードを実行

ユーザーがログインした後、最初のページ(たとえば/ home/index)を表示する前に、データベースに保存したユーザーから情報を取得する必要があります(表示名、連絡先電子メール、電話番号、住所、ユーザの写真などの情報)を含むことができる。

これまで考えてきたのは、この情報を取得してViewData経由でビューに渡す方法でControllerBaseを追加することです。しかし、この情報のデータベースを何度も照会することは、効率的ではないようです。別の方法としては、この情報をクッキーまたはセッション状態で保存することで、データベースに一度しかアクセスできない場合があります。しかし、ControllerBaseに依存しなければエラーが発生する可能性があります(たとえば、コントローラのメソッドによってはベースメソッドを呼び出すことを忘れた場合など)。また、(www.myapp.com/Users/joedoe/Detailのように)ユーザーが事前定義されたパスを使用してURLを入力した場合にのみ、ホームコントローラでこの機能を持つことができません。

私が検索しOpenIdConnectOptionsでイベントプロパティを使用してへの参照は、スタートアップクラスでアプリケーションビルダに渡されたオブジェクトが見つかりました:、

app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions 
{ 
    ClientId = Configuration["Authentication:AzureAd:ClientId"], 
    Authority = Configuration["Authentication:AzureAd:AADInstance"] + Configuration["Authentication:AzureAd:TenantId"], 
    CallbackPath = Configuration["Authentication:AzureAd:CallbackPath"], 
    Events = new OpenIdConnectEvents { 
     // 
    } 
}); 

しかし、OpenIdConnectEventsクラスは、いくつかの「OnAuthenticationSucceeded」イベントを持っていませんそれはOnAuthenticationFailedしか持っていません。これは私が望むものではなく、名前が私が探しているものではないように見える他のコールバックです。

OpenIdConnectEventsでコールバックを使用する必要がありますか、あるいは、ユーザーが認証された後にAADに接続してイベントをキャッチするASP.NET MVCコアアプリケーションの推奨方法は何ですか?

ありがとうございます。

答えて

1

さまざまな種類のフックが付いてくるOpenIdConnectEventsがあります。 SecurityTokenValidatedを見てください。これは、ユーザーがAADに対して認証され、トークンが検証された後に発生します。ここでは、データベース内のデータを検索し、独自の主張をIDなどに追加することができます(ロールなど)。

このサンプルではAADからグループ名を解決しますが、概念は同じです。クレームセットに追加データを追加し、アプリケーション全体でユーザープリンシパルからアクセスできます。役割のClaimTypeを使用すると、Authorize(Role=...)属性のように(あなたはASP.netでの既存の属性を使用できるようになります。

https://github.com/jpda/azure-ad-netcore-sample/blob/master/src/azure-ad-netcore-sample/Startup.cs

+1

コールバックのfuctionとOnTokenValidatedプロパティを設定!あなたのジョンをありがとう、あなたが言ったように、トリックをしました。そして、提供された例が素晴らしいです、私はセッション状態を使用することを計画していましたが、あなたが提供した例のように、より良い選択肢と思われます。 –

関連する問題