【发布时间】:2016-12-17 16:23:39
【问题描述】:
我已经实现了一个自定义OAuthAuthorizationServerProvider 来为帐户登录添加域约束。一切都很好。但是,我遇到了一个问题,一旦用户获得令牌,他们就可以将它用于他们想要的任何系统。例如:
他们使用正确的用户名和密码请求TokenEndpointPath(假设它是租户 1 的管理员帐户):http://localhost:40721/api/v1/account/auth 并接收承载令牌。
现在他们使用它来访问:http://localhost:40720/api/v1/info/admin,属于租户 0。该请求被视为已授权。
我尝试更改 CreateProperties 方法,但没有帮助:
public static AuthenticationProperties CreateProperties(string userName)
{
var tenant = DependencyUtils.Resolve<IdentityTenant>();
IDictionary<string, string> data = new Dictionary<string, string>
{
{ "userName", userName },
{ "tenantId", tenant.Tenant.Id.ToString() },
};
return new AuthenticationProperties(data);
}
我也尝试过覆盖ValidateAuthorizeRequest,但在我的调试中从未调用过它。
我是否需要在其他任何地方进行检查,因此令牌仅对域/正确的租户有效?
(注意:一个租户可能有多个域,所以如果我可以手动对正确的租户执行帐户检查而不是坚持一个域,那就太好了。但是,如果我能做到这一点,那就太好了,否则,只需限制域的令牌是可以的)
【问题讨论】:
标签: asp.net asp.net-web-api2 multi-tenant asp.net-identity-2