ADAL 라이브러리를 사용하여 Azure Active Directory 사용자를 인증 할 수있는 개념 증명 W8.1-app가 있습니다.ADAL : 사용자를 로그 아웃하려는 W8.1 앱
사용자가 로그인하여 내 리소스에 액세스 할 수 있도록 허용하는 부분이 있습니다. 그러나 사용자가 로그 아웃 할 수 있어야하고 다른 사용자가 같은 장치에 로그인 할 수 있어야합니다.
다른 질문이 SO 및 그 밖의 다른 질문과 관련하여 있지만 IOS 또는 WPF-app에서 발견되었습니다. (함께 사용하지 않을 경우에도)
private void ClearCookies()
{
const int INTERNET_OPTION_END_BROWSER_SESSION = 42;
InternetSetOption(IntPtr.Zero, INTERNET_OPTION_END_BROWSER_SESSION, IntPtr.Zero, 0);
}
[DllImport("wininet.dll", SetLastError = true)]
private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);
어느 작품 : 거기에, 그들은 <AuthenticationContext>.TokenCache.Clear()
를 호출하고 사용하여 다음 호출하여 쿠키를 삭제 제안했다. 내가 PromptBehavior.Always를 사용하는 경우
AuthenticationResult ar = await authContext.AcquireTokenAsync("https://xxx", "yyyy", new Uri("ms-app://callback/")
, new AuthorizationParameters(PromptBehavior.Auto, true));
를 호출 할 때 , 사용자는 실제로 항상 자신을 인증해야하지만, 다음 캐시를 사용하지 않습니다.
tokencache를 무효화 할 수있는 방법에 대한 아이디어가 있으십니까? 사전에
덕분에
편집 :
authContext.TokenCache.Clear();
string requestUrl = "https://login.windows.net/common/oauth2/logout";
Task.Run(async() =>
{
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, requestUrl);
var response = await client.SendAsync(request);
});
Edit2가
당신도 할 수 있습니다 vibronet에
감사를 해결, 나는이 작업을 수행하여 사용자가 로그 아웃 성공적으로 할 수 있었다 귀하의 응용 프로그램/임차인을위한 특정 URL을 "일반"을 임차인의 별칭으로 대체하여 사용하십시오 :
string tenantAlias = "TenantAlias.onmicrosoft.com";
string requestUrl = string.Format("https://login.windows.net/{0}/oauth2/logout", tenantAlias);
이것은 나를 위해 작동하지 않습니다. 네트워크 추적은 응답이 분명히 여기에서 실행되지 않는 JavaScript로 채워진 페이지임을 보여줍니다. 또한 ESTSAUTH와 같은 쿠키를 삭제하지 않고 응답 설정을 볼 수 있습니다. –