OID C клиентская поддержка для мультитенантности - oid c -client выдает сообщение «в хранилище не найдено соответствующее состояние» - PullRequest
0 голосов
/ 25 мая 2020

Я использую. net базовую аутентификацию Identity server4 для моего vue js клиентского приложения. У меня есть поддержка мультитенанта. Я использую библиотеку сценариев oid c client java на стороне клиента для аутентификации.

Конфигурация на стороне клиента будет такой

authority: 'http://identity.identityserver.com/',
"redirect_uri": "http://app.clientapp.com/callback",
"client_id": "app1",
"grant_type": "authorization_code",
"client_secret": "secret_code",
"response_type": "code",
"scope": "openid profile web.api",
"post_logout_redirect_uri": "http://app.clientapp.com/logoutSuccess",

Конфигурация сервера идентификации будет такой

new Client
            {
                ClientId = "app1",
                ClientName = "Vue JS APP",
                ClientSecrets = new List<Secret> { new Secret("secret_code") },
                AllowedGrantTypes = GrantTypes.Code,
                AllowAccessTokensViaBrowser = true,
                AlwaysIncludeUserClaimsInIdToken = true,
                AlwaysSendClientClaims = true,
                RedirectUris = { "http://app.clientapp.com/callback" },
                RequireConsent = false,
                PostLogoutRedirectUris = { "http://app.clientapp.com/callback/logoutSuccess" },
                AllowedScopes =
                {
                    IdentityServerConstants.StandardScopes.OpenId,
                    IdentityServerConstants.StandardScopes.Profile,
                    "web.api",
                },
},

Это работает, как и ожидалось, без каких-либо проблем. Он перенаправляет на сервер идентификации, появляется логин windows, и после ввода учетных данных он успешно перенаправляется на http://app.clientapp.com/callback.

Мое требование основано на логине пользователя , я должен перенаправить пользователя на его поддомен, ie поддерживает мультитенант. Например, если пользователь "user1" tenant1, даже если URL-адрес обратного вызова настроен как http://app.clientapp.com/callback, при успешном перенаправлении пользователь должен перенаправить на http://tenant1.clientapp.com/callback . Я сделал необходимые изменения на сервере идентификации, чтобы переопределить это с помощью IRedirectUriValidator. И он перенаправляет обратно http://tenant1.clientapp.com/callback. Но проблема в том, что oid c -клиент на стороне клиента выдает сообщение «В хранилище не найдено подходящего состояния».

Может ли кто-нибудь помочь в этом вопросе.

Заранее спасибо.

...