0

Azure 認証に ADAL iOS ライブラリを使用しています。ただし、最初に 1 つのアカウントでサインオンし、次にサインアウトして別のアカウントでサインインすると、問題が発生します。「AD_PROMPT_ALWAYS」を設定しても、次のエラーが発生します。

2015-08-31 12:50:39.939 PortalDev[908:174411] ADALiOS [2015-08-31 11:50:39 - xxx-xxx-xxx-xxx-xxx] ERROR: Error raised: 19. Additional Information: Domain: ADAuthenticationErrorDomain ProtocolCode:(null) Details:Different user was authenticated. Expected: 'aaa@xxx.com'; Actual: 'bbb@xxx.com'. Either the user entered credentials for different user, or cookie for different logged user is present. Consider calling acquireToken with AD_PROMPT_ALWAYS to ignore the cookie.. ErrorCode: 19.
2015-08-31 12:50:39.943 PortalDev[908:174411] ADAL Error: 19, Different user was authenticated. Expected: 'aaa@xxx.com'; Actual: 'bbb@xxx.com'. Either the user entered credentials for different user, or cookie for different logged user is present. Consider calling acquireToken with AD_PROMPT_ALWAYS to ignore the cookie. (status: 2)

私はキャッシュをクリアし、私が思うクッキーを試してクリアしました:

if (allItems.count > 0) {
            [cache removeAllWithError:&error];
            if (error) {
                CLSNSLog(@"Error clearing cache: %@", error.errorDetails);
            } else {
                CLSNSLog(@"Items removed.");
            }
        } else {
            CLSNSLog(@"Was no user cached.");
        }


        NSHTTPCookieStorage* cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
        NSArray* cookies = cookieStorage.cookies;
        if (cookies.count)
        {
            for(NSHTTPCookie* cookie in cookies)
            {
                CLSNSLog(@"Deleting Auth Cookie %@.", cookie.name);
                [cookieStorage deleteCookie:cookie];
            }
            CLSNSLog(@"Auth Cookies cleared.");
        }

しかし、クリアするCookieはなかったと思います。ログオン Web ページを取得すると、ユーザー名が事前に入力されます。数週間/数か月前は問題なく動作すると思っていましたが、今は問題があるようです。今日、最新の GitHub ソースから新しいライブラリをビルドします。

ユーザー名の切り替えを可能にする方法について何か提案はありますか?

4

1 に答える 1

0

エラーメッセージには次のように記載されています。

予想: 'aaa@xxx.com'; 実際: 'bbb@xxx.com'

これは、userId パラメーターが acquireToken に渡されていることを示しています。これにより、サインイン ページのユーザー名フィールドが事前に入力されます。ただし、エラーは、ユーザーがサインインしたときにユーザー名フィールドを別のユーザーに変更したことを示しています。特定のユーザーを要求したが、そのユーザーのトークンを取得していないため、acquireToken はエラーを返します。詳細については、この回答を参照してください。

ADAL iOS - 別のユーザーが認証されました。想定される userA@mydomain.com、実際の userB@mydomain.com

于 2015-09-01T16:12:19.190 に答える