Я разработал микросервис, используя. 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, который я указал в моем списке поставщиков.
Любая помощь приветствуется.
Спасибо