Конфигурация аутентификации: do tnet core: Поддержка поставщиков в шаблоне регулярного выражения для аутентификации JWT - PullRequest
0 голосов
/ 17 июня 2020

Я разработал микросервис, используя. NET Core 3.1. У меня есть несколько поставщиков аутентификации JWT, чтобы проверить, исходит ли запрос от правильного пользователя или нет. Я сохранил всех провайдеров в моем файле appsetting.json.

Вот часть моего файла:

"AuthenticationConfiguration": {
    "Providers": [
      {
        "Name": "Identity Service DEV01",
        "Audience": "",
        "Authority": "https://dev01.identity.my.ninja/auth",
        "AuthorityPattern": "^.*my.ninja\/auth$",
        "Type": "DEV",
        "Default": true
      },
      {
        "Name": "Identity Service DEV02",
        "Audience": "",
        "Authority": "https://dev02.identity.my.ninja/auth",
        "AuthorityPattern": "^.*my.ninja\/auth$",
        "Type": "DEV",
        "Default": true
      },
      {
        "Name": "Identity Service DEV03",
        "Audience": "",
        "Authority": "https://dev03.identity.my.ninja/auth",
        "AuthorityPattern": "^.*my.ninja\/auth$",
        "Type": "DEV",
        "Default": true
      }
    ]
  }

Существующий код, при запуске службы, мы вызываем имя метода ConfigureAuth, которое в основном l oop через всех доступных поставщиков от appsettings.json и вызовите метод AddJwtBearer, чтобы добавить JwtBearerOptions к AuthenticationBuilder.

Исходя из первоначальных выводов, кажется трудным обслуживать несколько сред DEV для идентификации через некоторый общий c провайдер в файле appsetting.json.

Это мой новый appsetting.json файл для соответствия идентификатору generi c URL-шаблон.

"AuthenticationConfiguration": {
    "Providers": [
      {
        "Name": "DEV Identity Service",
        "Audience": "",
        "Authority": "https://{0}identity.my.ninja/auth",
        "AuthorityPattern": "^.*my.ninja\/auth$",
        "Type": "DEV",
        "Default": true
      }
    ]
  }

Итак, в основном, мы думали добавить один общий c шаблон в appsettings.json файл, например https://{0}identity.my.ninja/auth, и во время При вызове конечной точки мы извлечем среду из токена JWT, например dev01, и заменим указанный выше URL-адрес, чтобы выполнить аутентификацию, но она не выполняется, и я получаю сообщение об ошибке

IDX20803: невозможно получить конфигурацию из : 'https: // {0} identity.my.ninja/auth/.well-known/openid-configuration

Это происходит из-за метода AddJwtBearer, выполняемого во время обслуживания началось с того, что мы не знаем, кто будет нашим валидатором личности, и он просто зарегистрировал Authority как https://{0}identity.my.ninja/auth в AuthenticationBuilder. Я пытаюсь найти что-то, что позволит мне сопоставить шаблон, но пока безуспешно.

Я пытаюсь вызвать метод AddJwtBearer, чтобы добавить JwtBearerOptions к AuthenticationBuilder во время любого вызова до конечной точки, где я знаю из токена JWT, этот запрос исходит из среды dev01, но мне это не кажется логичным, и я думаю, что не поддерживается dot net core.

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

Любая помощь приветствуется.

Спасибо

...