我是一位經驗豐富的Java開發人員(4-5年),但是Azure AD及其功能尚屬新手,因此我很抱歉提出一個潛在的基本問題。我一直在努力尋找任何微軟文檔或覆蓋Java中的這個話題的堆棧溢出問題(絕大多數是用C#),並且從我的理解來看,C#擁有比Java更多的Azure AD庫,因此C#中的解決方案不一定是解決方案Java的。驗證Java中的Azure AD簽名
我想完成一個基於場景的身份驗證POC,其中存在一個現有的Azure AD系統,充滿了用戶,我想充當身份驗證點。我的Java應用程序將收集用戶的用戶名和密碼(我理解這是過時的,並且不理想,但是出於需要的原因),並使用Microsoft adal4j庫調用Azure端點,以便成功返回JWC訪問權限令牌(除了刷新和ID令牌)。
這是我現有的檢索JWC訪問令牌的代碼片段。
private static AuthenticationResult getAccessTokenFromUserCredentials(String username, String password, String
AUTHORITY, String CLIENT_ID) throws Exception {
AuthenticationContext context = null;
AuthenticationResult result = null;
ExecutorService service = null;
try {
service = Executors.newFixedThreadPool(1);
context = new AuthenticationContext(AUTHORITY, false, service);
Future<AuthenticationResult> future = context.acquireToken(
"https://graph.windows.net", CLIENT_ID, username, password,
null);
result = future.get();
} finally {
service.shutdown();
}
if (result == null) {
System.out.println("ex)");
}
return result;
}
public void azureAuthenticate(String authority, String clientID, String username, String password){
AuthenticationResult result = null;
try {
result = getAccessTokenFromUserCredentials(username, password, authority, clientID);
DecodedJWT accessToken = JWT.decode(result.getAccessToken());
//Want to verify the validity of this access token
} catch (Exception ex) {
ex.printStackTrace();
}
}
我的代碼主要是基於這個Microsoft documentation
接收令牌後,我需要能夠驗證其真僞(我的理解證實其索賠的業務邏輯的一面,但我很困惑,以如何驗證簽名是否合法)。
非常感謝您的幫助,我很樂意提供所需的任何說明。
現在想通了,謝謝。 – dFrancisco