Промежуточное ПО OWIN OpenIdConnect - динамическое задание RedirectUri

Есть ли способ установить свойство RedirectUri для OpenIdConnectMessage на основе области запроса, а не области приложения?

Мое приложение обслуживает несколько доменов (myapp.com, myapp.fr, ..) и в зависимости от домена определяет язык по умолчанию для контента. Мне нужно, чтобы пользователь возвращался в тот же домен после входа в систему через IdP, поэтому мне нужно найти способ, как RedirectUri устанавливается для области запроса, а не для области приложения, как это делается путем настройки параметров промежуточного программного обеспечения в startup.cs.


person Antonin Jelinek    schedule 04.06.2015    source источник


Ответы (1)


Это можно сделать с помощью Notification события RedirectToIdentityProvider. Что-то вроде этого:

 Notifications = new OpenIdConnectAuthenticationNotifications
                 {
                     RedirectToIdentityProvider = async n =>
                     {
                         n.ProtocolMessage.RedirectUri = n.OwinContext.Request.Uri.Host;
                         n.ProtocolMessage.PostLogoutRedirectUri = n.OwinContext.Request.Uri.Host;
                     },
                     //other notification events...
                 }

`

person Antonin Jelinek    schedule 08.06.2015
comment
Ты меня спас, я совсем забыл о событиях. Мне пришлось динамически изменить clientId. - person sensei; 15.09.2017
comment
Я знаю, что это старый вопрос, но я работаю над устаревшим приложением .NET framework 4.7.2. Я пытаюсь использовать этот подход для динамической установки RedirectUri внутри RedirectToIdentityProvider, но это вызывает исключение Error: 'invalid_grant'. Error_Description (may be empty): 'Incorrect redirect_uri'. Однако он работает нормально, если я устанавливаю свойство RedirectUrl только при запуске приложения в OpenIdConnectAuthenticationOptions. Я не могу найти в Интернете других ссылок на изменение RedirectUri, вызывающего эту проблему. Какие-либо предложения? - person Chris; 05.07.2021