2017-01-12 13 views
4

Azure ADを使用して認証するためにWebサービスを統合しようとしています。 Azure ADの応答は毎回変わります。 Firefoxの通常のブラウザで自分のサイトを開くと、IsAuthenticatedがtrueになります。Azure AD APIは、System.Security.Principal.GenericIdentity.IsAuthenticatedを常にfalseに戻します。

IsAuthenticatedAsTrue

プライベートブラウザーで開く、にisAuthenticatedはfalseです。

IsAuthenticatedAsFalse

私が見ることができる唯一の違いは、ClaimsIdentityから真さにisAuthenticatedとfalseにisAuthenticatedがGenericIdentityからである、です。

以下は私のstartup.authコードです。

public partial class Startup 
{ 
    private static string clientId = ConfigurationManager.AppSettings["ClientId"]; 
    private static string aadInstance = ConfigurationManager.AppSettings["AADInstance"]; 
    private static string tenantId = ConfigurationManager.AppSettings["TenantId"]; 
    private static string postLogoutRedirectUri = ConfigurationManager.AppSettings["PostLogoutRedirectUri"]; 
    private static string authority = aadInstance + tenantId; 

    public void ConfigureAuth(IAppBuilder app) 
    { 
     app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); 

     app.UseCookieAuthentication(new CookieAuthenticationOptions()); 

     app.UseOpenIdConnectAuthentication(
      new OpenIdConnectAuthenticationOptions 
      { 
       ClientId = clientId, 
       Authority = authority, 
       PostLogoutRedirectUri = postLogoutRedirectUri 
      }); 
    } 
} 

次は私がこの問題を再現しようとしていますAzureAD

public void LoginUsingAzure() 
    { 
     HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" }, 
       OpenIdConnectAuthenticationDefaults.AuthenticationType); 
    } 
+0

あなたはプライベートウィンドウを開いてサインインしていないと言っていますか?プライベートウィンドウは他のウィンドウとセッションを共有しないためです。 – juunas

+0

この問題も通常のウィンドウで再現されます。通常のブラウザで自分のサイトにログインした後、ブラウザでキャッシュとクッキーを消去し、再度ログインしようとするとこの問題に直面します。この問題はすべてのブラウザで再現されます。 Azure ADのポータルで設定する必要があるものはありますか? –

+0

クッキーを消去すると、ASP.NET認証Cookieも消去されますか?あなたが認証されていないと言うことが少し期待されますか? GenericIdentityはあなたがまだ認証されていないことを意味します。 – juunas

答えて

0

:ここ

はあなたの参照のためのテストの図です。この問題の原因は依存関係の問題です。答えは、以下のstackoverflowリンクで見つかりました。 Kentor.OwinCookieSaver -Version 1.1.0 nugetパッケージをインストール

ASP.NET_SessionId + OWIN Cookies do not send to browser

は、私の問題を解決しました。

0

を認証要求を送信するために私のコードでは、しかし、失敗しました。私は、バージョン50.1.0を使って、クリーンインストールでWebアプリケーションをテストしています。

この問題を解決するには、このバージョンのFirefoxを再インストールすることをおすすめします。この問題は修正されました

enter image description here

+0

私はFirefoxを再インストールし、51.0.13のバージョンを使用しています。しかし、私はまだこの問題に直面しています。あなたはどのタイプの認証を使用していますか?それはopenidかoauthですか? –

+0

openId接続を使用して[このコードサンプル](https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect)をテストしていました。 –

+0

私はまだ問題を再現できます。私は実装のために同じコードサンプルを使用しています。私のサイトにログインした後、ブラウザでキャッシュとクッキーをクリアして、もう一度ログインしようとすると、私はこの問題に直面します。 Azure ADのポータルで設定する必要があるものはありますか? –

関連する問題