我想知道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有什么区别和用例?
答案 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
。
仅STS 提供临时凭据。 STS没有用户概念,它仅知道呼叫者是否具有访问凭据的权限以及这些凭据是哪些。 “对于您要认证的用户” 表示只有您处理所有身份验证,然后致电STS获取凭据以向这些用户提供。它既不实现箭头A
也不实现箭头B
。
认知用户池履行上方的箭头A
。
认知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代码)。