【问题标题】:Authorization per feature (AWS+Angular+Serverless)每个功能的授权(AWS+Angular+Serverless)
【发布时间】:2020-03-28 22:57:03
【问题描述】:

我正在使用 Angular + Serverless (AWS) 开发应用程序。

我是 AWS 的新手,我正在尝试了解如何实施身份验证和授权。我知道 AWS 有 Cognito 用户池(用户目录)和 Cognito 身份提供者(用于身份验证),但我不知道如何将它们配置到我的用例中。

我想实现一个细粒度的授权机制。 在这个授权机制中,我将拥有权限,每个功能(例如显示用户、添加用户、更新用户、删除用户等)和包含权限集合的角色(例如免费、高级、管理员等) .

应为每个用户分配一个角色并获得该角色的权限。在 Angular 应用程序中,我想查看这些权限以启用或不启用相应的功能(例如,如果用户有权添加用户,则显示添加按钮)。

通过这种方式,我可以动态更改角色的权限,这会自动反映用户可以做什么,而无需对 Angular 应用程序进行任何更改。

我习惯于使用 Spring Security 来实现这一点,其中每个功能都是一个角色(例如 ROLE_ADD_USER),并且它们被分组在角色组中(例如 GROUP_ADMIN)。这样,用户被分配到一个角色组,并且在登录期间,除了访问令牌之外,我还返回用户的所有角色(权限)。

谁能帮我弄清楚如何使用 AWS Cognito 和 IAM 来实现这一点?

【问题讨论】:

    标签: angular amazon-web-services amazon-cognito serverless-framework serverless


    【解决方案1】:

    授权需要在服务器端实现。

    您的无服务器应用需要检查每个请求,无论用户是否获得授权。您的 Angular 应用程序中的任何授权功能仅提供“安全性”。当您的 Angular 应用程序连接到您的无服务器后端时,它会通过 http 请求进行连接。从理论上讲,捕获这样的请求并对其进行更改是相对简单的。您在 Angular 应用程序中所做的任何事情都无法保护您免受这种情况的影响,这就是您需要验证每个请求的原因。

    您应该在 Angular 应用中实现的唯一功能是根据用户组和权限显示或隐藏 UI 元素。请记住,这只是为了使应用程序更易于访问,并不会提高安全性;任何人都可以在浏览器中轻松修改应用代码,以显示本应隐藏的 UI 元素。

    确保您的服务器是安全的,并且所有请求都在后端获得授权。

    您可以在此处详细了解保护无服务器应用程序的选项: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-controlling-access-to-apis.html

    【讨论】:

    • 用户池返回用户所属的令牌和组以及分配给该组的角色(每个组一个角色)但是我怎样才能获得 Angular 中角色的权限以显示对应的特征?
    猜你喜欢
    • 2020-05-05
    • 2021-09-25
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 2020-07-07
    • 1970-01-01
    相关资源
    最近更新 更多