我正在和一个客户合作来定义一个安全策略,并且已经被困在想要工作的东西上了。我是Azure AD的新手,所以这可能是不可能的。
考虑下面的应用程序前景。我有4个"API“应用程序:
通过API或API认证的用户/恶魔也应该能够访问API。但是,通过API认证的恶魔不能访问API。
我本来希望能够使用应用程序注册的“公开API”和"API权限“来控制JWT中返回的”角色“,但我似乎无法让它工作,也无法找到任何关于如何实现这一目标的适当指南。
编辑:为了清晰起见,API应用程序不是托管在Azure中的,我只是想使用Azure AD来提供身份验证
发布于 2019-05-02 23:20:08
区分客户端应用程序和API应用程序(或使用OAuth2术语的资源服务器)可能会有帮助。每一项都必须单独登记。上面的列表似乎将它们合并在一起,这可能会使您感到困惑。
前者(客户端应用程序)获取令牌,后者通过服务请求从客户端接收令牌。只有当客户端应用程序获得令牌时,Authentication才会参与进来。API不进行身份验证--它们使用令牌来授权对其服务的访问。客户端可以代表用户获取令牌,用户可以作为流程的一部分进行身份验证和同意,也可以代表自己获得令牌(客户端creds)。在AAD中,API应用程序可以公开/定义范围/权限,这些权限可以包含在这些令牌类型中的一个或两个类型中。API可能决定不需要任何令牌(听起来像您的API-C)。在API应用程序上公开(可用)权限,在客户端应用程序上指定(必需) API 权限。在运行时(如果使用AAD V2端点),客户端请求的作用域可能比按需要配置的范围更少。这只在客户端使用委托令牌(基于用户的)时才适用。(请注意,API应用程序也可能是另一个API应用程序(在多层系统中常见)的客户端应用程序。
顺便说一句,部署客户机或API的位置对上面的内容完全不重要。最多情况下,部署会影响您需要为某些客户端应用程序(而不是API)指定的应答url的值。
https://stackoverflow.com/questions/55956052
复制相似问题