У меня есть Java-программа, использующая ADAL4J, которая отлично работает на немобильном устройстве, но при развертывании на любые мобильные устройства через Oracle MAF (который развертывается как Cordova, HTML5, CSS), он не работает в методе AuthenticationContext.ADAL Для Java на мобильных устройствах: подсказка не разрешена
Ошибка:
com.microsoft.aad.adal.AuthenticationException: Prompt is not allowed and failed to get token:
Вот основной код:
service = Executors.newFixedThreadPool(1);
String url = AUTHORIZATION_ENDPOINT + tenantId + "/oauth2/authorize";
//Next line is where it fails
authContext = new AuthenticationContext(url, false, service);
Future<AuthenticationResult> future =
authContext.acquireToken(ARM_ENDPOINT, clientId, username, credential, null);
result = future.get();
System.out.println("Access Token - " + result.getAccessToken());
System.out.println("ID Token - " + result.getIdToken());
На основе исследований я сделал это кажется мне, возможно, придется использовать метод AcquireTokenSilent вместо этого, однако это метод не существует в библиотеке ADAL для Java (с использованием ADAL4J 1.1.3, самого последнего из этих сообщений). Я видел, что есть библиотека ADAL for Cordova, которая содержит этот метод, который может работать. Однако это использует NodeJS, и я предпочел бы придерживаться решения Java, если это возможно.
Поблагодарили бы за любую помощь. Благодарю.
EDIT: Я думаю, что основная проблема, если библиотека ADAL4J не поддерживает свойство AuthenticationContext.tokenCache и не включает поддержку опции PromptBehavior, которая присутствует в конкретных ADAL-реализации устройства.
Если это правда, предположим, что мне придется либо попробовать ADAL для Cordova, либо для каждого устройства ADAL SDK.
Питер, спасибо за ответ. Ваше понимание верное. К сожалению, я уже использую поток кода Oauth 2.0 Auth через библиотеку ADAL для Java (обратите внимание на вызов конечной точки «/ oauth2/authorize» для токена auth). – SoonersBaby