【发布时间】:2015-09-05 06:39:07
【问题描述】:
我们正在为我们的一个客户端应用程序使用 Azure AD 身份验证。我们希望同时实现基于声明的授权。
我们的应用程序设置是基于 Angular 的客户端应用程序与 Web API 连接(两个客户端服务器都使用 Azure AD 承载身份验证进行保护)。服务器应用程序使用 OWIN 托管。
我们需要在服务器端提供自定义授权。 Azure AD 中有一项用于添加用户和角色的规定。然而,这对我们来说还不够。我们的用户管理是通过 AD 和安全组进行的。要获得对应用程序的访问权限,用户需要成为基本组的一部分,并且基于其他组分配更多权限(访问应用程序的特定部分、编辑特定实体等)或直接授予应用程序中的用户。本质上,并非所有用户都将在应用程序中注册,我们可能必须使用图形 API 查询 AD 以检查他们属于哪些所有应用程序特定组。
OWIN 身份验证和授权模型基于身份验证服务器和资源服务器。我们可以根据需要将它们分开。但是,在我们的例子中,我们需要拆分身份验证和授权。当客户端提供不记名令牌时,我们需要验证令牌是否有效,然后向用户配置文件添加声明。我们还需要缓存用户声明,这样我们就不会频繁地访问数据库。 (我们的客户端应用在一个用户操作中调用多个 Web API。)
Identity 2.0 中的位置在哪里
- 我可以验证令牌 &
- 插入特定于应用程序的声明
如果我的整个应用程序都围绕用户授权,并且所有查询都需要根据用户可以访问的数据进行过滤,那么哪种设计模式更适合 Web API 应用程序?
【问题讨论】:
-
我不确定我是否完全理解了这个问题。您有一个使用承载身份验证的 Web api。您想如何使用 OAuthAuhorization?
-
我想使用基于声明的授权。 OAuth 有很多示例,但不确定这是否适用于 Bearer auth。 Bearer 不使用 OAuth。
-
@ezile 请检查已编辑的问题。
标签: owin asp.net-identity-2 azure-active-directory asp.net-authorization