如何使用 AWS Cognito 令牌进行 Documentum IDfSession

问题描述 投票:0回答:1

我有这个代码块可以通过 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。

java amazon-web-services amazon-cognito documentum documentum-dfc
1个回答
0
投票

如果您在 OTDS 上配置了 aws 身份验证处理程序,则可以获取 aws 令牌,然后将其(编码为 base64 mime)发送到令牌(我认为)OTDS 端点,并且您应该取回可以使用的 OTDS 令牌与任何针对 OTDS 配置的 DCTM 客户端。

你只需要与文档记录不佳的 API 进行一些(或不少)斗争即可使其正常工作

© www.soinside.com 2019 - 2024. All rights reserved.