我正在使用ASP.NET Core WebApi、Javascript客户端(带有oidc- client -js)和带有身份的IdentityServer4来建立解决方案。
我遵循了不同的教程和指南,并找到了一个很好的解决方案。
当访问未经身份验证的JS客户端时,我会被重定向到IdentityServer,在那里我可以成功登录并使用承载令牌重定向回JS客户端,然后使用它来消费API。
该系统将必须支持多个“租户”,所有共享相同的DB。其想法是使用URL中的租户密钥访问JS客户端,并传递给它:www.mydomain.com/{tenantKey}/someSubPage
我希望阅读tenantKey,并使用自定义的header (如X-My-Tenant-Key )传递IdentityServer。然后,IdentityServer应该在授权过程中包含这个密钥。
我已经检查了oidc客户端js的GitHub页面,并做了一些进一步的研究,但是我无法找到它是如何工作的。
另一种方法是将密钥包含在IdentityServer的URL中,并应用一些MVC路由魔术,或者以某种方式对redirect_uri做一些肮脏的事情。
不过,在尝试这些之前,我想看看我是不是漏了什么东西。
我的JS客户端原型现在就是这样处理它的:
// Setup
var config = {
authority: "http://localhost:50000",
client_id: "myClient",
redirect_uri: "http://localhost:65000/callback.html",
response_type: "id_token token",
scope: "openid profile email myApi",
post_logout_redirect_uri: "http://localhost:65000/index.html",
};
var mgr = new Oidc.UserManager(config);
...
// Signing in
mgr.signinRedirect();发布于 2020-05-23 16:25:30
不知道这是否是您要寻找的内容,但您可以通过"acr_values“将租户密钥作为查询参数从您的客户端传递到Identity Server(授权服务器)。这是针对你这种情况的。您需要将acr_values添加到客户端:
config = {
authority: "http://localhost:50000",
client_id: "myClient",
redirect_uri: "http://localhost:65000/callback.html",
response_type: "id_token token",
scope: "openid profile email myApi",
post_logout_redirect_uri: "http://localhost:65000/index.html",
acr_values : "tenant:your_tenant" };然后可以通过授权上下文访问授权服务器中的值,例如:
string tenant = context.Tenant;您可以读取文档,它的一个用途就是传递租户信息。
https://stackoverflow.com/questions/61972506
复制相似问题