2017-02-03 7 views
0

私は、モバイル以外のデバイスでも動作するが、Oracle MAF経由でモバイルデバイスにデプロイされたADAL4Jを使用したJavaプログラムを使用しています(Cordova、HTML5、CSS )、それはAuthenticationContextメソッドで失敗します。ADALモバイルデバイス上のJava:Promptは使用できません

エラーは次のとおりです。ここで

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 for Javaライブラリには存在しません(この記事の最新版ではADAL4J 1.1.3を使用しています)。私はこのメソッドが含まれているADAL for Cordovaライブラリがあることを知りました。しかし、これはNodeJSを使用しています。可能であれば、Javaソリューションを採用することをお勧めします。

助けていただければ幸いです。ありがとう。

EDIT:ADAL4JライブラリがAuthenticationContext.tokenCacheプロパティをサポートしていない場合、またはデバイス固有のADAL実装にあるPromptBehaviorオプションのサポートが含まれていない場合、主な問題だと思います。

本当の場合は、ADAL SDK for Cordovaまたは各デバイスADAL SDKを試してみる必要があります。

答えて

0

あなたの説明によると、JavaのOracle MAFを使用して、iOS/Android /などのモバイルアプリケーションのクロスプラットフォームを作成したいと考えています。

私の経験上、Javaでのニーズに適したソリューションは、Azure ADのJava HTTPクライアントによる認証にOAuth2 REST APIを使用しています。OAuth 2.0 Authorization Code Flowを参照してください。

Androidの場合は、ADAL for Androidをそのまま使用してください。それ以外の場合は、Javaのマルチプラットフォーム内で認証を直接サポートする既存のライブラリがないようです。それが役に立てば幸い。

+0

ピーター、返信いただきありがとうございます。あなたの理解は正しいです。残念ながら、私はすでに、OAL 2.0認証コードフローをADAL for Javaライブラリ経由で使用しています(authトークンの "/ oauth2/authorize"エンドポイントへの呼び出しに注意してください)。 – SoonersBaby

関連する問題