2017-02-03 2 views
0

У меня есть 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.

ответ

0

Согласно вашему описанию, на основе моего понимания, я думаю, вы хотите создать кросс-платформу для мобильных приложений, например, iOS/Android/etc, используя Oracle MAF на Java.

В соответствии с моим опытом решение, подходящее для ваших нужд на Java, использует API OAuth2 REST для аутентификации через HTTP-клиент Java на Azure AD, пожалуйста, обратитесь к официальному руководству OAuth 2.0 Authorization Code Flow.

Если только для Android, вы можете напрямую использовать ADAL for Android. В противном случае кажется, что нет никакой существующей библиотеки для непосредственной поддержки аутентификации в многоплатформенной среде Java. Надеюсь, поможет.

+0

Питер, спасибо за ответ. Ваше понимание верное. К сожалению, я уже использую поток кода Oauth 2.0 Auth через библиотеку ADAL для Java (обратите внимание на вызов конечной точки «/ oauth2/authorize» для токена auth). – SoonersBaby

Смежные вопросы