使用javascript客户端对IdentityServer4的多租户支持
您好,我正在将IdentityServer4与aspnet核心应用程序一起使用 我使用的是他们示例中的MVC客户机,也使用的是javascript客户机。根据租约名称,javascript客户端可以打开为tenantone.domain.com或tenanttwo.domain.com等 我无法获得动态子域的授权 请帮忙!如果有人在asp.net core中执行过此类任务 要注册javascript客户机,我使用以下代码使用javascript客户端对IdentityServer4的多租户支持,identityserver4,Identityserver4,您好,我正在将IdentityServer4与aspnet核心应用程序一起使用 我使用的是他们示例中的MVC客户机,也使用的是javascript客户机。根据租约名称,javascript客户端可以打开为tenantone.domain.com或tenanttwo.domain.com等 我无法获得动态子域的授权 请帮忙!如果有人在asp.net core中执行过此类任务 要注册javascript客户机,我使用以下代码 string tenancyName = "tenantone"
string tenancyName = "tenantone"
var discoveryClient = new DiscoveryClient("http://login.domain.io:5000");
discoveryClient.Policy.RequireHttps = false;
var doc = await discoveryClient.GetAsync();
var request = new IdentityModel.Client.AuthorizeRequest(doc.AuthorizeEndpoint);
var url = new IdentityModel.Client.AuthorizeRequest(doc.AuthorizeEndpoint).CreateAuthorizeUrl(
clientId: tenancyName,
responseType: ResponseTypes.IdTokenToken,
scope: "openid profile api1",
redirectUri: "http://" + tenancyName + ".domain.io:5003/callback.html",
state: "random_state",
nonce: "random_nonce",
responseMode: "form_post",
extra: new
{
AllowedCorsOrigins = "http://" + tenancyName + ".domain.io:5003"
});
var response = new IdentityModel.Client.AuthorizeResponse(url);
var accessToken = response.AccessToken;
var idToken = response.IdentityToken;
var state = response.State;
在获得客户授权后,我使用以下代码:
var config = {
authority: "http://login.domain.io:5000",
client_id: "tenantone",
redirect_uri: "http://tenantone.domain.io:5003/callback.html",
response_type: "id_token token",
scope: "openid profile api1",
post_logout_redirect_uri: "http://tenantone.domain.io:5003/",
};
var mgr = new Oidc.UserManager(config);
debugger;
mgr.getUser().then(function (user) {
if (user) {
//log("User logged in", user.profile);
$("#bodyPage").removeAttr("style");
}
else {
// log("User not logged in");
mgr.signinRedirect();
}
});
您需要澄清并显示您尝试了什么,您的问题是什么,您是否收到任何错误消息。从你给我的代码来看,我最好的猜测是1。您没有在IdentityServer4中的客户端上配置cors,您确定这是在添加客户端吗?尝试连接时会收到什么错误消息?首先添加inMemory客户端可能更容易。因此,您知道您已正确注册。我收到CORS问题。我假设这是在身份验证期间,您是否可以在IdentityServer上发布您的CORS策略代码,控制器上是否仍有您的
[SecurityHeader]
属性,您是否首先尝试使用inMemory客户端配置此功能?您需要澄清并显示您尝试了什么,您的问题是什么,是否收到任何错误消息。从你给我的代码来看,我最好的猜测是1。您没有在IdentityServer4中的客户端上配置cors,您确定这是在添加客户端吗?尝试连接时会收到什么错误消息?首先添加inMemory客户端可能更容易。因此,您知道您已正确注册。我遇到了CORS问题。我假设这是在身份验证期间,您是否可以在IdentityServer上发布您的CORS策略代码,控制器上是否仍有[SecurityHeader]
属性,您是否先尝试使用inMemory客户端配置此属性?