Настройка собственного домена с помощью Angular oAuthservice и Identity server 4 - PullRequest
2 голосов
/ 05 июля 2019

У нас есть портал Angular, который взаимодействует с сервером идентификации 4 и хорошо работает с нашим собственным доменом. Мы хотим добавить поддержку для пользовательского домена и для этого мы храним доменное имя в нашей базе данных, и всякий раз, когда открыта какая-либо угловая ссылка на портал, мы берем имя домена из базы данных и присваиваем authConfig, как показано ниже:

Object.assign(authConfig, { issuer: domainNam });

this.oauthService.configure(authConfig);
this.oauthService.tokenValidationHandler = new JwksValidationHandler();
this.oauthService.loadDiscoveryDocumentAndTryLogin().then(() => {
  // .... rest of the code
});

Устанавливает доменное имя для эмитента, но не перенаправляет на страницу входа, а показывает ошибку ниже:

enter image description here

Ссылка сделана так:

https://account.ourDomainName.io/connect/authorize?response_type=id_token%20token&client_id=WebApiImplicitClientId&state=OcTztAVWhhgJtfQYwXvJO3B9RD6rGkeKpQxM99ki&redirect_uri=https%3A%2F%2Fportal.ourDomainName.io%2Fauth-callback&scope=openid%20profile%20email%20aitapi&nonce=OcTztAVWhhgJtfQYwXvJO3B9RD6rGkeKpQxM99ki

Что здесь не так?

Если эмитент не установлен, тогда он работает нормально, но когда я динамически устанавливаю эмитента, это создает эту проблему.

authConfig, как показано ниже:

export const authConfig: AuthConfig = {  
  // Url of the Identity Provider
  issuer: environment.identityServer.authority,    
  // URL of the SPA to redirect the user to after login
  redirectUri: window.location.origin + "/auth-callback",
  // The SPA's id. The SPA is registerd with this id at the auth-server
  clientId: environment.identityServer.client_id,
  // set the scope for the permissions the client should request
  // The first three are defined by OIDC. The 4th is a usecase-specific one
  scope: environment.identityServer.scope,
  logoutUrl: environment.identityServer.authority + '/Account/Logout',
}

1 Ответ

2 голосов
/ 13 июля 2019

Вот несколько моментов, которые вы можете решить:

1) эмитент -> Идентификатор эмитента сервера авторизации // Не должно создавать проблем даже при чтении из текущего файла среды, убедитесь, что соответствующий ключ установлен в соответствующей среде

2) redirectUri -> URL-адрес перенаправления // убедитесь, что этот обратный вызов настроен в Identity Manager, это может быть одной из причин

3) Заголовки авторизации -> Я полагаю, что вы уже передаете секретный ключ с веб-сервера, HeadSup для хорошей практики

Теперь, наконец,

Object.assign(authConfig, { issuer: domainNam }); // step 1

this.oauthService.configure(authConfig); // step 2

Для приведенного выше кода убедитесь, что вы ожидаете на шаге 1, если читаете доменное имя с сервера, а затем вводите на шаг 2

Я полагаю, что, как вы заявили, он не работает только при динамической настройке, с учетом вышеизложенных соображений ваша аутентификация должна работать.

...