Добавить пользовательский параметр в запрос аутентификации IdentityServer4 - PullRequest
0 голосов
/ 21 марта 2019

Есть ли способ добавить пользовательский параметр в запрос аутентификации identityserver. Я пробовал таким образом. но он добавит параметры, возвращающие URL, а не как строки запроса на аутентификацию.

 Events = new OpenIdConnectEvents
    {
        OnRedirectToIdentityProvider = context =>
        {
            if (context.Properties.Items.ContainsKey("connection"))
                context.ProtocolMessage.SetParameter("connection", context.Properties.Items["connection"]);

            return Task.FromResult(0);
        }
    }

но мне нужно, чтобы эти параметры в URL-адресе запроса не являлись параметром URL-адреса возврата.

1 Ответ

0 голосов
/ 22 марта 2019

URL запроса выглядит так:

https://login.dev.domain.com/connect/authorize?client_id=657ce44e-10a2-4b66-9078-7f1acf92811f&redirect_uri=https%3A%2F%2Fmyapp.dev.domain.com%2Fsignin-oidc&response_type=code&scope=openid%20email&response_mode=form_post&nonce=636888568253105245.ODY4MzNjNGMtZDQxYi00YTkzLTg5OTctNTJkZGRjM2IwNGRjMjEwMWEzZGQtYWY1Mi00ODQ0LWE0ZGYtZTAxOWU0YjQyODkz&ui_locales=en&state=CfDJ8F-9xHJQT19NjH-KMvnd4SnuYPsaINrq_yn6DAfN8Y6h5aHBoukF0TPqZHOYk0mroCw4tz-03ajp6cgaomZ8HnrE6Or6ZzzNdfUqzDpDNH4VwWCax8JwtsRreob9j-nsOnttzDkRVTCzVEjjHpR__OR498c-kVXf-RjudGPghE0K&x-client-SKU=ID_NETSTANDARD1_4&x-client-ver=5.2.0.0

где, в моем случае ui_locales=en - мой пользовательский параметр. Это не часть redirect_uri, просто еще один параметр запроса, разделенный & знаками. Это работает, когда вам нужно передать некоторые данные в ваш IdP. Когда вам нужно просто сохранить некоторые данные во время запроса и вернуть их с ответом на авторизацию, вы можете использовать предопределенный параметр State.

services.AddAuthentication().AddOpenIdConnect(Constants.MyIdpName, Constants.MyIdpName, options => {
***           
options.Events = new OpenIdConnectEvents {
     OnRedirectToIdentityProvider = ctx => {
          var rcf = ctx.HttpContext.Features.Get<IRequestCultureFeature>();
              if (rcf.Provider != null) {
                    string lng = rcf.RequestCulture.Culture.TwoLetterISOLanguageName;
                    ctx.ProtocolMessage.Parameters.Add("ui_locales", lng == "nn" || lng == "nb" ? "no" : lng);
              }
              return Task.CompletedTask;
          }
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...