我正在我们公司实现IdentityServer3,但在如何处理客户端到客户端授权方面,我遇到了空白,我希望任何指向正确方向的指针都是正确的。
以下是我们的要求摘要:
注:本公司拥有用户身份及所有客户。
最初,我认为我们可以使用WebAPIClientA流配置ClientCredentials。然后,WebSiteClientA \ WebSiteClientB将配置为WebAPIClientA的客户端凭据,并可以在需要访问WebAPIClientA,时生成访问令牌,或者生成一个范围有限的访问令牌,并将该访问令牌传递给用户,这样用户就可以直接从客户端访问WebAPIClientA。
这将几乎满足我们所有的需求,除了一个大的需求,我们还希望能够管理客户端对另一个客户的访问范围,并且通过使用ClientCredentials流的方法,任何具有客户端凭据的人都能够为该客户机下的所有作用域生成访问令牌。ie WebSiteClientA应该能够为具有读和写作用域的WebAPIClientA生成访问令牌,但是WebSiteClientB应该只能为具有读取作用域的WebAPIClientA生成访问令牌。
在我看来,客户机\标识服务器会话应该是:WebSiteClientA向身份服务器请求对WebAPIClientA的范围X的访问令牌,并为WebSiteClientA.提供客户端机密身份服务器然后说是,您是WebSiteClientA,我们可以从我们的记录中看到您可以使用范围X访问WebAPIClientA,这里是一个访问令牌。
这是可能的,还是我以完全错误的方式看待这个问题,也许有一个更好的方法来满足需求?
发布于 2016-06-23 12:55:24
听起来你说的是两件事。
首先,在API中,您需要用户的id。要获得用户id,您可以决定是要构建受信任的子系统,还是不希望有可信的子系统(也就是说API信任或不信任MVC客户端传递用户标识符)。如果您做了一个受信任的子系统,那么客户端凭据从MVC客户机流到API是很好的。如果您不想要一个受信任的子系统,那么您需要MVC客户机为用户获得一个访问令牌(通过隐式或混合流)。
您要问的第二个问题是,您是否可以控制每个客户端被允许请求的作用域,您可以通过客户机配置上的AllowedScopes配置属性(或它称为什么)。此设置与上述第一个问题是正交的。
https://stackoverflow.com/questions/37945482
复制相似问题