Как передать несколько значений acr_value в IdentityServer? - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть IdentityServer4 и клиент javascript, который использует библиотеку oidc-client.js для аутентификации на моем IdentityServer.У меня есть конкретный случай, когда мне нужно передать оба значения acr: idp:{providerName} и tenant:{tenantName}.Используя библиотеку oidc-client.js в объекте конфигурации, я передаю строку arc_values, которая будет либо acr_values: "tenant:lado", либо acr_values: "idp:Google".Если я пытаюсь отправить список строк acr_values: ["idp:Google","tenant:lado"] и пытаюсь получить к нему доступ в IdentityServer, я получаю только арендатора, и он имеет значение: Google,tenant:lado.Как видите, обнаруживается только idp, но он объединяет все.Как я могу добиться желаемого эффекта от отправки двух отдельных значений acr_values?

1 Ответ

0 голосов
/ 17 февраля 2019

Значения acr должны быть разделены пробелом в виде одной строки, например: "idp: Google tenant: lado".Это также описано в спецификации здесь в списке параметров запроса 'acr_values'.

Причина, по которой все после первого двоеточия анализируется как значение acr 'idp', заключается в том, что oidcклиентская библиотека сериализует массив, используя 'encodeURIComponent', и вызывает объединение значений массива через запятую.IdentityServer анализирует значения acr, предполагая, что они разделены пробелом, поэтому он не может разбить значение на части.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...