如何解决使用MS Identity Platform创建自己的AccessToken
我正在扩展产品上的登录选项以支持MS Identity Platform,以便能够使用Azure AD登录(并以此获得SSO / MFA) 当前,我们正在使用.Net Core + JWT(JwtBearerDefaults.AuthenticationScheme) 环境是有角度的客户端,.Net Core APA和后端数据库。
我可以进行设置了。
我的挑战是,在我们的业务模型和后端数据库中,我们拥有约2.000个用户权限以及我们自己的用户/角色模型授予访问权限。
我目前正在从MSAL获得IdToken,并在概念证明中使用oid将Azure ID与我们的用户模型耦合在一起。
但是,在我们现有的JWT解决方案中,我们的访问令牌保留有关用户ID的声明,还包含有关角色的声明以及确定访问权限的另一个属性(单元/容器)。通过这三个属性,我们可以根据API方面的2.000使用权来验证是否允许请求。
我想将此信息(用户,角色,单位)保留在令牌中-但对如何使用有疑问。
约束:
- 我们无法创建/使用Azure声明。我们太多了,客户将管理Azure应用程序-在创建,添加,删除我们每个软件版本的权限时。
- Azure不了解角色/单位数据-每个客户的数据都不相同-因此信息也无法存储在Azure中。
下面概述了我的最佳想法-这种方法是否正确,并且符合ID /访问权限分离的方式?
我希望有人能给我一些反馈。
我的想法是,Angular客户端获取Azure IDToken。然后,我使用Azure IDToken,调用我们的API,该API在服务器端验证ID Token,然后向我授予访问令牌,其中包含用户,角色和单位。这个令牌根本不是Azure的,只是我们的API生成的令牌-它将再次是唯一一个对其进行验证的令牌)。 Pro的这种方法也是,无论Azure或我们自己的API提供哪种IDToken,我都可以保留一种类型的访问令牌。
我希望在令牌领域有更多经验的人可以验证这是否可行?
最好的问候 /安德斯
解决方法
除了一件事之外,这是一种可行的方法。 请勿使用ID令牌进行授权。
您的前端应从AAD获取一个访问令牌作为您的后端。 此访问令牌包含用户objectId,可让您将用户映射到数据库中的用户。
Id令牌仅适用于请求身份验证的应用程序,并告知用户其元数据(如用户的显示名称等),但并不意味着授权任何内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。