使用javascript客户端对IdentityServer4的多租户支持

使用javascript客户端对IdentityServer4的多租户支持,identityserver4,Identityserver4,您好,我正在将IdentityServer4与aspnet核心应用程序一起使用 我使用的是他们示例中的MVC客户机,也使用的是javascript客户机。根据租约名称,javascript客户端可以打开为tenantone.domain.com或tenanttwo.domain.com等 我无法获得动态子域的授权 请帮忙!如果有人在asp.net core中执行过此类任务 要注册javascript客户机,我使用以下代码 string tenancyName = "tenantone"

您好,我正在将IdentityServer4与aspnet核心应用程序一起使用

我使用的是他们示例中的MVC客户机,也使用的是javascript客户机。根据租约名称,javascript客户端可以打开为tenantone.domain.com或tenanttwo.domain.com等

我无法获得动态子域的授权

请帮忙!如果有人在asp.net core中执行过此类任务

要注册javascript客户机,我使用以下代码

    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客户端配置此属性?