AWS提供cognito,为开发人员提供注册和登录功能,包括与OpenId兼容身份提供商(如facebook,google等)的联合.
cognito开发者控制台中有两种类别.这些是管理用户池和管理联合身份.
我只是有点困惑,因为两者非常相似,即使我们想要提供我们的客户登录他们的Facebook帐户.cognito用户池本身提供联合身份验证和联合身份池,也由身份验证提供程序提供.
问题是,如果我想允许我的客户使用自己的Facebook帐户登录,我应该使用哪些类别?用户池或联合身份?
另外,如果我想在API网关中配置授权器,我必须创建cognito用户池但联合身份池.这是选择认知类别的主要原因吗?
我正在使用 AWS Congito 用户池通过 Cognito 身份池进行账户管理,该身份池将此用户池作为身份提供者。我使用它来控制通过 API 网关对 API 的访问,该网关将请求发送到 Lambda。我的 Lambda 是使用 Micronaut 用 Java 8 实现的。所有这些都运行良好。
在 Lambda 中,我从以下Principal中获取名称HttpRequest:
protected String resolveUser( HttpRequest request ){
String ret = null;
Optional<Principal> principal = request.getUserPrincipal();
if( principal.isPresent() ){
ret = principal.get().getName();
}
if( ret == null || ret.length() == 0 ){
ret = "unknown";
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
Cognito identityId 的字符串名称中返回的内容。像这样的东西:
us-east-1:xxxxe650-53f4-4cba-b553-5dff42bexxxx
我想记录实际的用户登录信息,或者至少有一些方法可以在需要时将 identityId 转换为登录信息。
该LookupDeveloperIdentity API调用似乎是去了解这个正确的方式,但我无法得到它的工作。
尝试使用 Java 和 AWS Java SDK 2 执行此操作: …
amazon-web-services amazon-cognito aws-java-sdk micronaut micronaut-aws