Oauth 2.0 使用Azure AD保护CLI到REST API的正确授权策略

Oauth 2.0 使用Azure AD保护CLI到REST API的正确授权策略,oauth-2.0,jwt,azure-active-directory,Oauth 2.0,Jwt,Azure Active Directory,我正在尝试对一个backofficecli工具(NodeJS)实现安全性,该工具调用restapi(Java/JAX-RS)来执行数据库操作等。 由于我们对所有用户帐户使用Azure AD,我想使用它来验证我们的用户并进行授权 由于并非AD的所有成员都应该使用CLI,而且CLI有两种类型的用户具有不同的可用命令集,因此需要进行授权,这意味着即使您能够使用CLI,某些功能也可能会被锁定,具体取决于您是操作员还是管理员 我已经在Azure AD中创建了两个应用程序,一个用于CLI,另一个用于API。

我正在尝试对一个backofficecli工具(NodeJS)实现安全性,该工具调用restapi(Java/JAX-RS)来执行数据库操作等。 由于我们对所有用户帐户使用Azure AD,我想使用它来验证我们的用户并进行授权

由于并非AD的所有成员都应该使用CLI,而且CLI有两种类型的用户具有不同的可用命令集,因此需要进行授权,这意味着即使您能够使用CLI,某些功能也可能会被锁定,具体取决于您是操作员还是管理员

我已经在Azure AD中创建了两个应用程序,一个用于CLI,另一个用于API。我可以使用我们的AD凭据登录,获取CLI应用id的访问令牌,请求REST API资源。在客户端,我正在使用。 在Java端,令牌是根据Microsoft公钥进行验证的,因此一切似乎都很顺利

但是,我应该如何将用户锁定为操作员或管理员角色?我能想到的一种简单方法是在RESTAPI中具有用户/角色关联,并且仅使用OAuth流来验证用户。但我想这就是广告的目的。。。在这种情况下,OAuth示波器能帮我吗? 或者RESTAPI应该在收到访问令牌并知道最终用户身份后调用AD来查询用户组成员身份吗

提前谢谢

使用应用程序角色

在这里,您可以很好地了解什么是应用程序角色以及如何处理它们:

最后推荐的资源非常有用,将指导您完成整个过程


此外,在开发CLI时,建议使用设备流。注意,必须在API中检查角色。CLI也可以查看它们,但它确实需要在API中检查,因为CLI在用户的计算机上运行。当然,它们必须在API中检查。。。他们在代币中声称……这正是我在实验中发现的解决方案。很遗憾,Azure门户没有用于创建角色的UI,那么我可能会更早地发现它们。对于登录,我打算在CLI中运行一个简单的express服务器来处理重定向,只需打开登录页面的浏览器即可。