我有这个代码块可以通过 AWS 获取令牌,
public static void main(String[] args) {
AWSCognitoIdentityProvider cognitoClient = AWSCognitoIdentityProviderClientBuilder//
.standard()//
.withRegion(Regions.US_EAST_1)//
.build();
final Map<String, String> authParams = new HashMap<>();
authParams.put("USERNAME", username);
authParams.put("PASSWORD", password);
authParams.put("SECRET_HASH", calculateSecretHash(username));
final InitiateAuthRequest authRequest = new InitiateAuthRequest();
authRequest//
.withAuthFlow(AuthFlowType.USER_PASSWORD_AUTH)//
.withClientId(CLIENT_ID)//
.withAuthParameters(authParams);
InitiateAuthResult result = cognitoClient//
.initiateAuth(authRequest);
System.out.println(result.getAuthenticationResult().getAccessToken());
}
private static String calculateSecretHash(String userName) throws Exception {
SecretKeySpec signingKey = new SecretKeySpec( //
CLIENT_SECRET.getBytes(StandardCharsets.UTF_8), //
HmacAlgorithms.HMAC_SHA_256.toString());
Mac mac = Mac.getInstance(HmacAlgorithms.HMAC_SHA_256.toString());
mac.init(signingKey);
mac.update(userName.getBytes(StandardCharsets.UTF_8));
byte[] rawHmac = mac.doFinal(CLIENT_ID.getBytes(StandardCharsets.UTF_8));
return Base64.encodeBase64String(rawHmac);
}
一旦我有了这个令牌,我想用 documentum 创建一个 IDfSession,就像这样,但我不想传递用户/通行证,而是想传递 AWS 令牌,
private static IDfSession getDfSession() throws DfException {
IDfClient client = DfClient.getLocalClient();
IDfSessionManager sessionMgr = client.newSessionManager();
IDfLoginInfo login = new DfLoginInfo();
login.setUser(USERNAME);
login.setPassword(PASSWORD);
login.setDomain(null);
sessionMgr.setIdentity(DOCBASE, login);
IDfSession session = sessionMgr.newSession(DOCBASE);
return session;
}
这可能吗?我是否需要首先以任何方式处理令牌才能通过存储库进行身份验证?使用这些凭据,在 OTDS 中,可以选择重定向到 aws、登录并重定向回已通过身份验证的 OTDS。
如果您在 OTDS 上配置了 aws 身份验证处理程序,则可以获取 aws 令牌,然后将其(编码为 base64 mime)发送到令牌(我认为)OTDS 端点,并且您应该取回可以使用的 OTDS 令牌与任何针对 OTDS 配置的 DCTM 客户端。
你只需要与文档记录不佳的 API 进行一些(或不少)斗争即可使其正常工作