2017-01-09 10 views
1

Integrating Azure AD into an ASP.NET Core web app sampleからコードを少し変更しています。私は正常にアプリケーションを実行することができますし、 "ログイン"リンクをクリックすると、正しくAzure ADサインインページにリダイレクトされます。Azure ADサンプルのASP.NET MVCコアでCookieAuthenticationの自動チャレンジが機能しない

ただし、Authorize属性で保護されているルートにアクセスしようとすると、アプリケーションが自動的にログインページにリダイレクトされるようにしたいと思います。 [Authorize]アトリビュートをHomeControllerのアクションContactに追加しましたが、ログインしなくてもアクセスしようとすると、ログインページにリダイレクトされません。ログイン中に連絡先ページにアクセスすると、正しく表示されます。

次のように私はStartup.csファイルを更新しています

app.UseCookieAuthentication(new CookieAuthenticationOptions() 
{ 
    AutomaticAuthenticate = true, 
    AutomaticChallenge = true, 
    LoginPath = "/Account/Login" 
}); 

をしかし、これらの変更で、私は、ログインページにリダイレクトされません。私は行方不明の何か他にありますか?

+0

コントローラーアクションに[Authorize]属性を追加してこのアクティオを呼び出すと、サンプルが正常に動作しますnログインしないと、ログインページにリダイレクトされます。サンプルコードを変更しました。問題を再現するためにコードをアップデートと共有できますか? –

+0

また、ログインしていないときに連絡先アクションを実行したときに実際に何が起こったのかについては言及していません。単にログインページにリダイレクトされないと言うだけです。あなたのすべての改造者だけでなく、あなたが見ているエラーや行動を投稿してください。ありがとう! –

+0

ご協力いただきありがとうございます。私は答えを見つけてそれに留意した。ちょうど、私が問題を抱えていたとき、それはページが空白であることを明らかにし、ブラウザーはアドレスバーに/ Home/Contact URLを表示しました。また、F12ツールでは、このページに401 Unauthorizedレスポンスコードが表示されていました。しかし、下記のように、これはMicrosoft.AspNetCore.Authentication.Cookiesパッケージのバージョン1.1.0で変更されたようです。 – John

答えて

1

私はこの問題を発見しました。このサンプルは、Microsoft.AspNetCore.Authentication.Cookiesのバージョン1.0.0を参照しています。私はパッケージをバージョン1.1.0とhit the issue described hereにアップグレードしました。具体的には、このパッケージのバージョン1.1.0では、複数の認証プロバイダ(サンプルが行うもの)を使用すると、自動チャレンジの動作が変更されました。

次のように私は、サンプルのStartup.csファイルの設定方法を更新することにより、変更を回避することができました:

変更

app.UseCookieAuthentication(new CookieAuthenticationOptions() 
{ 
    AutomaticChallenge = true 
}); 

そしてapp.UseOpenIdConnectAuthenticationへの呼び出しでのapp.UseCookieAuthenticationを呼び出す行、この行を追加してください:

AutomaticChallenge = false 
関連する問題