0

私はこれを完全に間違って処理している可能性がありますが、MS Azure で OpenID を使用してユーザーを認証しています。次に、OpenID ミドルウェアの通知でユーザーがユーザー アカウントを持っていることを確認します。ユーザーが見つからない場合は、セキュリティ例外をスローします。このアプリケーションタイプ ページへのアクセス権がありません。フックが足りないだけですか?

例を次に示します: https://gist.github.com/phillipsj/3200ddda158eddac74ca

4

1 に答える 1

1

次の行に沿って、通知内で try...catch を使用できます。

SecurityTokenValidated = (context) =>
{
   try
   {
       // retriever caller data from the incoming principal
       var username = context.AuthenticationTicket.Identity.FindFirst(ClaimTypes.Name).Value.Split('@')[0];
       var database = DependencyResolver.Current.GetService(typeof (IDatabase)) as IDatabase;
       var employee = database.Query(new GetEmployeeByUsername(username));

       if (employee == null)
       {
          throw new SecurityTokenValidationException();
       }
         // I add my custom claims here
         context.AuthenticationTicket.Identity.AddClaims(claims);
         return Task.FromResult(0);
   }
   catch (SecurityTokenValidationException ex)
   {
       context.HandleResponse();   // This will skip executing rest of the code in the middleware
       context.Response.Redirect(....);
       return Task.FromResult(0);
   }
}
于 2015-03-10T21:46:59.997 に答える