问题描述
嗨,我正在研究Angular SPA和Web API核心。我正在尝试实施身份验证和授权。我现在已经完成了以下操作。
- 为我的前端应用程序注册了一个应用程序,并添加了必需的重定向uri和修改的清单文件以启用隐式流程。还为其分配了一些角色。
- 又为我的后端注册了一个应用程序。我以api / clientid的形式添加了作用域。然后添加在步骤1中创建的客户端应用程序ID。
- 用户可以成功登录到应用程序。
- 现在,我的JWT令牌已在索赔中起作用。在我的API中,我添加了[Authorize(Roles =“ Engineers,Admins”)]
- 因此,如果用户在JWT令牌中具有任何工程师或管理员角色,那么他们将被允许访问我的API。
- 到目前为止,我的授权正常。但是进入身份验证部分,当前我的azure AD租户的所有用户都可以登录(用户可以点击我的前端url并添加用户名和密码,然后它将询问MFA,他们将进入应用程序主页)。
- 如果用户是上述任何角色的一部分,那么只有他们才能在主页上看到数据,因为在主页上我正在调用一些API,并且添加了[Authorize(Roles =“ Engineers,Admins”)]。
- 如果假设用户不是上述角色的一部分,他们仍然可以登录(登录意味着他们可以添加用户名,密码和MFA),他们将进入首页,但是他们看不到任何数据,因为api仅当他们是Engineers,Admins角色的一部分时才能访问。
- 我的问题是,如果用户不属于Engineers,Admins角色,为什么他们能够登录并进入首页。应该在登录步骤本身中对其进行限制。
- 我不太确定自己在这里问对了事,还是只是在身份验证与授权之间混淆了自己。
- 目前,我正在根据角色进行授权。我也可以使用网上论坛来完成同样的事情。在声明中,我可以返回组并创建策略并进行授权。如果用户是该组的成员,那么我可以授权。我试图了解在各个小组中使用角色将获得什么优势。
- 目前,我有开发,生产和非生产环境。但是Azure AD是通用的,因为没有适用于Azure AD的环境。因此,在环境之间在azure广告中注册单独的应用程序是一个好主意,还是在环境之间在azure AD中使用注册的同一应用程序?如果我为每种环境创建单独的应用程序,我将获得什么优势?
我真的是在试图理解上述概念,有人可以给我一些关于以上事情的见解吗?如果有人帮助我理解这个概念,那对我真的很有帮助。任何帮助将不胜感激。谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)