使用STS或Cognito对移动用户进行身份验证的AWS有什么区别

时间:2019-12-20 02:10:24

标签: amazon-cognito aws-sts

我想知道STS在本质上是否像Cognito一样对联合用户进行身份验证?

每个AWS文档:AWS Security Token Service (STS)

  

AWS安全令牌服务(STS)是一项Web服务,使您可以为AWS Identity and Access Management(IAM)用户或您通过身份验证的用户(联合用户 >)。

每个AWS文档:Cognito

  

Amazon Cognito可让您快速轻松地将用户注册,登录以及访问控制添加到您的Web和移动应用程序。 Amazon Cognito可扩展到数百万用户,并支持通过SAML 2.0与社交身份提供商(例如Facebook,Google和Amazon)以及企业身份提供商进行登录。

就验证移动应用程序的移动用户而言,STS和Cognito有什么区别和用例?

1 个答案:

答案 0 :(得分:0)

首先,请了解Cognito包含两项相关服务User Pools and Identity Pools

简而言之,用户池是具有所有修饰的用户数据库:身份验证,MFA,组,密码重置等。它允许用户提供用户名和密码,如果有效,则为用户提供密码。令牌以证明他们是真实用户。它提供身份验证

从用户到AWS凭证的ID池映射。为了映射到AWS凭证,它需要一些用户概念,并且必须由 somebody 提供。这可以是用户池,也可以是第三方。无论如何,只有拥有某种类型的用户令牌后,您才能使用ID池,然后可以使用它来询问ID池:“给我该用户可以使用的凭据(如果有的话)”。 id池提供针对AWS服务进行 authorization 所需的凭据。


  

就验证移动应用程序的移动用户身份而言,STS和Cognito有什么区别和用例?

考虑路径user login -A-> user auth token -B-> aws credentials

  1. 仅STS 提供临时凭据。 STS没有用户概念,它仅知道呼叫者是否具有访问凭据的权限以及这些凭据是哪些。 “对于您要认证的用户” 表示只有您处理所有身份验证,然后致电STS获取凭据以向这些用户提供。它既不实现箭头A也不实现箭头B

  2. 认知用户池履行上方的箭头A

  3. 认知ID池符合上方的箭头B

如果您想同时使用箭头A和箭头B,则可以将STS用作解决方案的一部分。

如果您只想自己做箭头A,则可以使用id池来处理箭头B(id池实际上在后端使用STS)。您将告诉id池将处理箭头A的身份提供者(例如Facebook),然后 you 将处理让Facebook为您验证用户身份的逻辑。您将获取用户获得的Facebook身份验证令牌,并将其传递给ID池以取回凭据。

如果您想完成最少的工作,则可以使用用户池来处理箭头A,使用ID池来处理箭头B。您仍然可以在用户池下方使用第三方身份验证提供程序(例如Facebook),但是您可以将ID池指向用户池,将用户池指向第三方。然后,用户池为您处理A部分的所有逻辑(您编写了零个Facebook身份验证API代码)。