我有一個使用ADAL4J的Java程序,它非常適用於非移動設備,但是通過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 for Java庫中不存在(使用ADAL4J 1.1.3,本文最新)。我確實看到有一個ADAL for Cordova庫包含此方法可能工作。但是,使用NodeJS,如果可能的話,我寧願堅持使用Java解決方案。
希望得到任何幫助。謝謝。
編輯:我認爲如果ADAL4J庫不支持AuthenticationContext.tokenCache屬性,也不包括支持PromptBehavior選項的設備特定ADAL實現中的主要問題。
如果這是真的,我猜我必須嘗試ADAL for Cordova或每個設備ADAL SDK。
彼得,謝謝你的回覆。你的理解是正確的。不幸的是,我已經通過ADAL for Java庫使用了Oauth 2.0 Auth代碼流(注意對auth令牌的「/ oauth2/authorize」端點的調用)。 – SoonersBaby