首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将自定义HTTP头从oidc-client-js传递到IdentityServer 4。

将自定义HTTP头从oidc-client-js传递到IdentityServer 4。
EN

Stack Overflow用户
提问于 2020-05-23 13:07:18
回答 1查看 1.3K关注 0票数 2

我正在使用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客户端原型现在就是这样处理它的:

代码语言:javascript
复制
// 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();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-23 16:25:30

不知道这是否是您要寻找的内容,但您可以通过"acr_values“将租户密钥作为查询参数从您的客户端传递到Identity Server(授权服务器)。这是针对你这种情况的。您需要将acr_values添加到客户端:

代码语言:javascript
复制
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" };

然后可以通过授权上下文访问授权服务器中的值,例如:

代码语言:javascript
复制
string tenant = context.Tenant;

您可以读取文档,它的一个用途就是传递租户信息。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61972506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档