Целесообразно создать бэкэнд, который может принимать токены OAuth от нескольких эмитентов. Для этого вам нужен слой для фильтрации запросов и проверки токенов доступа. Если вы из JAVA EE, подумайте, что это фильтр, который защищает все конечные точки, защищенные OAuth (например, сервлеты).
Выбор сервера авторизации (сторона, выдавшая токен OAuth) может быть выполнен несколькими способами.
Во-первых, отправитель запроса (вероятно, клиент) может передать подсказку с маркером OAuth поставщику данных. Для этого вы можете использовать выделенный заголовок с предварительным соглашением с клиентами и поставщиком данных (на стороне сервера). Например, auth-source:azure-ad
для обозначения OAuth-токена был выдан сервером авторизации рекламы Azure. Обратите внимание, что при таком подходе вам также необходимо согласовать поддерживаемые значения заголовков.
Вторым является обнаружение сервера авторизации через претензию эмитента (iss
претензия). Для этого ваш токен доступа должен быть в формате JWT. В соответствии с текущей ситуацией, многие сервисы выдают токены доступа в формате JWT (например: A zure AD делает это ). JWT, являющийся автономным токеном, должен содержать утверждение iss
, обозначающее издателя JWT , сервер авторизации.