2017-10-31 16 views
0

Azure AD認証を使用してユーザーを認証するAsp.net MVCアプリケーションがあります。私はユーザーがログインせずにいくつかのAPIコントローラにアクセスできるようにしたい。私は[AllowAnonymous]属性をコントローラの上に置いて、これらのコントローラを認証からスキップすることを試みましたが、常に資格証明のためのMicrosoftログインページにリダイレクトしました。 Startup.csのコードスニペット:AllowAnonymousが晴天広告認証で動作していません

public void ConfigureAuth(IAppBuilder app) 
    { 
     string clientId = GetConfigValue("ida_ClientId"); 
     string aadInstance = GetConfigValue("ida_AADInstance"); 
     string tenant = GetConfigValue("ida_Tenant"); 
     string domain = GetConfigValue("ida_Domain"); 
     string authority = GetConfigValue("ida_Authority"); 
     string postLogoutRedirectUri = GetConfigValue("ida_RedirectUri"); 

     bool devEnvironment = Convert.ToBoolean(GetConfigValue("DevEnvironment")); 

     app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); 
     app.UseCookieAuthentication(new CookieAuthenticationOptions() 
     { 
      CookieHttpOnly = true, 
      CookieSecure = devEnvironment ? CookieSecureOption.SameAsRequest : CookieSecureOption.Always, 
     }); 

     app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions 
     { 
      ClientId = clientId, 
      Authority = authority, 
      PostLogoutRedirectUri = postLogoutRedirectUri, 
      RedirectUri = postLogoutRedirectUri, 
      Notifications = new OpenIdConnectAuthenticationNotifications 
      { 
       AuthenticationFailed = context => 
       { 
        context.HandleResponse(); 
        context.Response.Redirect("/Error?message=" + context.Exception.Message); 
        return Task.FromResult(0); 
       } 
      } 
     }); 
    } 

    private string GetConfigValue(string key) 
    { 
     if (RoleEnvironment.IsAvailable) 
     { 
      return RoleEnvironment.GetConfigurationSettingValue(key); 
     } 
     else 
     { 
      return ConfigurationManager.AppSettings[key]; 
     } 
    } 
} 

何かが不足している場合は教えてください。事前に感謝します

+0

を参照することができますし、それを展開しました[簡易認証](https://docs.microsoft.com/en-us/azure/app-service/app-service-authentication-overview)を有効にしますか? –

+0

こんにちは@FeiXue、あなたの助けてくれてありがとうございます。また、[簡単な認証](https://docs.microsoft.com/en-us/azure/app-service/app-service-authentication-overview)の例をいくつかリンクしてください。前もって感謝します。 –

答えて

1

これは予想される動作です。 Easy Authは、アプリケーションと同じサンドボックスで実行されるネイティブIISモジュールとして実装されています。有効にすると、IISワーカープロセスにディスパッチされたすべてのHTTP要求は、アプリケーションコードが応答する前に、まずこのモジュールを通過する必要があります。

リクエストがウェブアプリケーションに送信されるのは、認証されない限りAllowAnonymousはこのシナリオでは機能しません。匿名の要求を許可する場合は、Easy Authを使用する代わりに、OWINコンポーネントを使用して認証を実装できます。

ここ

はOpenIDのコンポーネントでMVCを保護する例です。

active-directory-dotnet-webapp-openidconnect

かつ簡単認証についての詳細、あなたがCGillumのブログ

Architecture of Azure App Service Authentication/Authorization

関連する問題