使用 COR 通过公共 API 安全共享访问令牌?

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

我正在考虑创建一个位于 Cognito 之上的身份验证服务器,用于管理分布在不同域中的各种应用程序的用户会话。目标是单点登录体验,这样如果您通过域 A 登录,域 B 和 C 将共享同一会话。

这可以通过重定向到 Auth 服务器进行登录来完成,该服务器又重定向到 Cognito。身份验证成功后,Cognito 会重定向到身份验证服务器,该服务器能够抓取刷新令牌并将其粘贴到安全的 httponly cookie 中。最后,身份验证服务器重定向到请求使用访问权限和 ID 令牌(如果适用)登录的域。

经过身份验证后,来自任何域的请求(通过 COR 强制)可用于获取服务器端 API 的访问令牌、获取用户信息、租户信息等,而无需显式向身份验证服务器发送任何令牌本身。只要刷新令牌有效,这就允许从同一浏览器中的所有域进行静默登录。

Cognito 使用密钥对 JWT 进行签名,因此伪造 JWT 非常困难。

这是否是一种处理访问令牌的安全方法,同时提供跨多个域的无缝 SSO 体验?对于这样的架构,我应该注意什么安全问题吗?有更好的方法吗?

谢谢!

security oauth-2.0 amazon-cognito
1个回答
1
投票

安全考虑:

  1. Cookie 安全:

    • 使用带有
      Secure
      标志和正确 SameSite 设置的安全 httponly cookie。
  2. 令牌验证:

    • 使用 Cognito 的公钥在服务器端验证 JWT。
  3. CORS

    • 实施限制性 CORS 设置以防止 CSRF 攻击。
  4. 令牌过期和刷新:

    • 处理令牌过期并实现自动刷新逻辑。
  5. 错误处理和日志记录:

    • 实施强大的错误处理和日志记录机制。

替代方案和最佳实践:

  1. OAuth 2.0 和 OIDC:

    • 考虑利用 OAuth 2.0 和 OIDC 以获得更大的灵活性和可扩展性。
  2. 联合身份和 SSO 提供商

    • 使用 Auth0、Okta 或 Azure AD 等托管身份提供商来实现全面的功能和安全控制。
  3. 多重身份验证 (MFA):

    • 实施 MFA 以获得额外的安全层。
  4. 持续监控和安全审计

    • 定期进行安全评估、渗透测试和代码审查。

总而言之,虽然您的架构可以提供无缝 SSO,但请确保实施这些安全措施,并考虑利用既定标准和托管解决方案来增强安全性、可扩展性和可靠性。

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