web-dev-qa-db-ja.com

Azureアプリケーションからサインアウトする方法は?

AzureADアプリケーションとWebアプリを作成しました。 AzureADアプリケーションはAAD認証を使用します。これはうまく機能します。 URLにアクセスして認証されていない場合は、資格情報を入力する必要があります。資格情報を入力すると、アプリケーションに転送されます。

しかし、それから問題が起こります。サインアウトするにはどうすればよいですか。 この質問 を見つけました。オプション2を実装したかったのですが、コードを使用してサインアウトするのではなく、AzureADが提供するリンクを使用します。重要なのは、これをどこに設定すればよいかわからないということです。彼は述べています

ログインとログアウトのための特定のリンクを追加します

しかしここで? Azureのどこで、どのポータル(新しいまたは古い)でこれを構成できますか?彼はサンプルへのリンクも提供しましたが、私はこのサンプルを理解していません(私はAzureに少し慣れていません)。

7
Martijn

できることは、アプリケーションでサインアウトURIを作成し、ユーザーがLogoutリンクまたはボタンをクリックすると、ユーザーをそのURIにリダイレクトすることです。

サインアウトURIの形式は次のとおりです。

https://login.microsoftonline.com/{0}/oauth2/logout?post_logout_redirect_uri={1}

どこ {0}は、テナントIDまたはAzure AD名(something.onmicrosoft.com)および{1}は、Azure ADの終了時にサインアウトプロセスが完了した後、ユーザーがリダイレクトされるアプリケーションへのリンクです。

8
Gaurav Mantri

スタートポストで述べたように、提供された例を機能させることができなかった理由をついに見つけました。設定WEBSITE_AUTH_LOGOUT_PATHは非推奨になり、/.auth/logoutを呼び出してログアウトできるようになりました。

このページ で見つかりました

7
Martijn

URIを使用できます

https://login.microsoftonline.com/{0}/oauth2/logout?post_logout_redirect_uri={1}

@Gauravが示唆したように。しかし、これはブラウザのクッキーをクリアしません。リクエストオブジェクトからCookieを明示的に削除する必要がある場合があります。

foreach (string cookie in HttpContext.Current.Request.Cookies.AllKeys) { HttpContext.Current.Response.Cookies[cookie].Expires=DateTime.Now.AddDays(-1);}

ただし、これには、Azure ADが一定の時間間隔でCookieをキャッシュするため、他のソースから同じCookieを使用して送信された要求がAzureADによって正常に認証される可能性があるという問題もあります。私はまだこれに取り組む方法を見つけようとしています。

お役に立てれば。ありがとう

1