AWS Java 用于使用 Cognito 用户池为 Oauth 客户端凭证流身份验证提供服务的 SDK?

AWS Java SDK for service to service Oauth client credentential flow authentication with Cognito user pool?

情况:

我有 java 后台进程服务 运行 需要访问安全的 REST API 端点。

API 端点是亚马逊 API 网关后面的 AWS lambda 函数 运行,使用无服务器框架。它由 Amazon Cognito 用户池授权方保护。

我已经为我的 Java 后台服务创建了一个 App Client,它附加到用户池。

我已成功检索到客户端身份验证令牌并使用 cURL 和 HttpClient 访问了 API 端点。

问题:

此功能在 AWS Java SDK(v1 或 v2)中可用吗?

我一直在浏览 SDK 文档,但到目前为止一无所获。有什么我错过的,或者还没有找到的吗?或者这只是目前不可用?

AWS Java SDK(任何版本)中没有原始 API 调用用于 Cognito 的客户端凭证身份验证流程。但是,您可以手动编写自己的逻辑来实现此流程,因为客户端凭据(机器到机器流程)中涉及的步骤序列可以使用 vanilla Java 完成。此流程需要向 Cognito 的 OAuth 2.0 令牌端点 [a] 发出 POST 请求。由于此流程本质上需要端点请求,我认为 Cognito 开发人员不会开发可访问的 API 来实现流程。

有关更多详细信息,我会要求您查看此官方文档[b] 和此非 AWS 发布的教程[c]。

参考资料

[一个]。 https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html

[b]。 https://aws.amazon.com/blogs/mobile/understanding-amazon-cognito-user-pool-oauth-2-0-grants/

[c]。 https://lobster1234.github.io/2018/05/31/server-to-server-auth-with-amazon-cognito/

我建议你使用google-oauth-java-client,你可以在我发布的博客中找到例子。 http://shaikezam.com/machine_to_machine_cognito_auth