identityserver3 - 一个id服务器发出的访问令牌是否可以与另一个id服务器一起使用?

时间:2015-10-12 04:32:53

标签: c# asp.net-mvc asp.net-web-api2 identityserver3

我一直在尝试使用IdentityServer3并观看了视频,然后通过在线文档,下载了样本,我的样本都运行良好。

我已经设置了两个独立的身份服务器,一个用于保护Web api,另一个用于保护MVC应用。我已经这样做了,而不是两个都有一个id服务器,因为这两个应用程序主要针对两个不同的客户,只有少数用户是共同的。

但是,我确实希望能够从mvc应用程序(mvc_B,idsvr_B)为某些用户(单点登录)调用web api(api_A,idsvr_A)。

如果我在两端使用相同的idsvr,我发现这样可以正常工作,但我认为我应该能够让mvc_B从idsvr_B获取访问令牌,将其添加到调用api_A的请求并拥有idsvr_A对令牌中的声明采取行动?

我发现idsvr_A不理解(?)来自idsvr_B的令牌,当我尝试检查上下文中的声明列表时。在api_A的断点中,它是空的&主体未设置为idsvr_B中的标识:

e.g。在源自ResourceAuthorizationManager的类中,

中的上下文

CheckAccessAsync(ResourceAuthorizationContext context)

方法在context.Principal上以空索赔列表结束。

我是否需要做些什么来将声明从一个idsvr转换为另一个?或者我没有正确设置?我认为,由于访问令牌格式是标准的,令牌可以在id服务器之间互换吗?

在我进行进一步调试以确保正确传递和接收令牌之前,我确实要求确认此正常工作。

1 个答案:

答案 0 :(得分:2)

据推测,两个身份服务器将具有不同的颁发者名称和不同的签名证书 - 所以不 - 除非为每个身份服务器添加一个验证中间件,否则web api将不会同时接受这两者。

API很少信任多个发卡机构但技术上可行。