2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

iOSを12.3にアップデートすると、ASP.NET coreのAzure AD認証ができなくなった

Last updated at Posted at 2019-06-19

無限ログインループ発生

どういうアプリで起きたか

ASP.NET core MVC(2.2)のWEBアプリケーション(の社内ツール)です
(自分はその開発・保守をしています)。
利用者の認証にはAzure Active directory v2のOpen ID Connectを組み込んでいます。
社内ツールですが、社員の皆さんの手持ちのデバイスからもアクセスできるようになっています。

どういう環境で起きたのか

iOSを12.3にアップデート後、iPhoneユーザーの皆さんがSafariでアクセスするときにそれは起きました。

どういう事象が起きたか

ログイン画面でログインしても、またログイン画面に戻ってしまう「無限ログインループ」が発生していました。
直属の上司×2にその事象が起きて困っていた&若干イラついていたので、急いで調べました。

原因:Safariがトークンをくれなかった

まずそもそも認証の仕組みはどうなっているのか

サインインの処理が走ったタイミングで、

  1. クライアントからリダイレクトしてAzure ADにトークンを取得し
  2. そのトークンをアプリに再びリダイレクトし、
  3. アプリがしかるべきビューを返却しています
    今年やっと公開された分かりやすい図です(この図がずっとほしかった、、、!)
    aspnetcorewebapp-intro.png

(参照:https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-aspnet-core-webapp)

事象が発生していた原因

ログイン画面から認証処理が走り、初期画面が表示されるのが正なのですが、
アプリに再度リダイレクトされるタイミングで、Azure ADから取得したトークンが削除されていました。
Safariのアップデート時に、同じサイトのものでないクッキーをリクエスト時に送信できない仕様に変更されたようです。
Safari12_releasenote.PNG

(参照:https://developer.apple.com/documentation/safari_release_notes/safari_12_release_notes)
クロスサイトスクリプティング対策のようです。
これに関連してか、cookieのsamesite属性がsafariでは未対応のようです。

対策:startup.csの設定を変えた

ASP.NET coreのstartup.csに設定することでSameSiteModeをオフにすることができます。
ひとまずこれによって無限ログインループは解消されました

 services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
                .AddAzureAD(options => {
                    Configuration.Bind("AzureAd", options);
                })
                .AddCookie(options=>
                        options.Cookie.SameSite = SameSiteMode.None
                    );

これから

safari13もプレビューになっているようですが、これからはcookieの設定もアプリでちゃんと管理しないといけないな、と思いました(小並感)。

参照

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?