2017-11-27 4 views
0

私は、ユーザーがAzure AD v2.0に対してサインインおよびサインアウトできるWPFデスクトップアプリケーションでMSALを使用しています。 Microsoft's Graph access sampleと私はin this functionのように、ログアウトするPublicClientApplication.Remove(IUser)を使用して参照他の例のほとんど:Remove(IUser)は、そのユーザのMSALのキャッシュとそのトークンを削除しますように、私が見ることができるものから、デスクトップアプリケーションでAzure AD 2.0/MSALからサインアウトするにはどうすればいいですか?

//(from Microsoft's example) 

/// <summary> 
/// Sign out the current user 
/// </summary> 
private void SignOutButton_Click(object sender, RoutedEventArgs e) 
{ 
    if (App.PublicClientApp.Users.Any()) 
    { 
     try 
     { 
      App.PublicClientApp.Remove(App.PublicClientApp.Users.FirstOrDefault()); 
      this.ResultText.Text = "User has signed-out"; 
      this.CallGraphButton.Visibility = Visibility.Visible; 
      this.SignOutButton.Visibility = Visibility.Collapsed; 
     } 
     catch (MsalException ex) 
     { 
      ResultText.Text = $"Error signing-out user: {ex.Message}"; 
     } 
    } 
} 

は、それが見えますが、それはしていません実際にユーザーに署名しているようだ。私のアプリケーションに再びログインしようとすると、前のユーザーは「サインイン」と表示され、再度クリックするとそのユーザーとしてログインします。 Logout does not work when using Microsoft Authentication Library (MSAL)私は、MSALの現在の状態があれば、手動でログアウトする必要があると思います。

私は(それがRemove(IUser)どのように見えるかやっている)サインアウトアプリのローカルレコードを削除関与させるべきであると言うthis Microsoft oneなどのWebアプリのチュートリアルの多くを発見した、とも

のいくつかの変種にリダイレクトしました
GET https://login.microsoftonline.com/common/oauth2/v2.0/logout?post_logout_redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F 

しかし、私のアプリはウェブブラウザではないので、そのリクエストをどうすればいいのか分かりません。 MSALの使用中にどうすれば本当にログアウトできますか?

答えて

0

あなたが正しいです、Remove(IUser)メソッドはキャッシュからユーザーを削除します。 サインアウトメソッドをまだ実装していません。これは、あなたの書いたように、ログアウトエンドポイントを活用します。これは私たちが将来提供したいものです。ログアウトにはアプリからのサインアウトとデバイスからのサインアウトの2種類があります。

あなたの最後の質問に答えるために、あなたのWPFアプリは実際にはWebブラウザではありませんが、セッションクッキーを保持する埋め込みWebブラウザが含まれており、Azure ADにログアウト要求を送ることによってクリアする必要があります。

関連する問題