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

时间:2017-03-15 14:01:22

标签: identityserver4

您好我正在使用带有aspnet核心应用程序的IdentityServer4。

我正在使用他们样本中的MVC客户端并使用javascript客户端。 javascript客户端可以根据租期名称以tenantone.domain.com或tenanttwo.domain.com等方式打开。

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

请帮忙!如果有人在asp.net核心中完成了这样的任务

注册我在代码下使用的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();
        }
    });

0 个答案:

没有答案