Динамически установить OWIN перенаправить URI - PullRequest
0 голосов
/ 23 мая 2018

Я использую OWIN для подключения к O365 через Microsoft Graph API в приложении ASP.NET MVC.Все настроено в Startup.Auth.cs, включая значение URI перенаправления, которое в настоящее время берется из web.config.Аутентификация работает правильно.

Поскольку я использую подстановочные знаки в регистрации приложения, URI перенаправления может иметь различные значения, и пользователь может проходить аутентификацию в O365 с любого количества страниц в приложении.После аутентификации я бы хотел, чтобы их вернули на страницу, на которой они только что были, но поскольку URI перенаправления уже установлен, они возвращаются на эту страницу.

Как я могу изменить URI перенаправления, в другом местев моем коде, после того, как контекст идентичности OWIN был создан?

Ниже приведен фрагмент кода запуска.

   public partial class Startup
    {
        public void ConfigureAuth(IAppBuilder app)
        {
            private static string redirectUri = ConfigurationManager.AppSettings["ida:RedirectUri"];
            ....                
            app.UseOpenIdConnectAuthentication(
               new OpenIdConnectAuthenticationOptions
               {

                   ClientId = appId,
                   Authority = "https://login.microsoftonline.com/organizations/v2.0",
                   PostLogoutRedirectUri = redirectUri,
                   RedirectUri = redirectUri,
                   Notifications = new OpenIdConnectAuthenticationNotifications
                   {
                       AuthorizationCodeReceived = async (context) =>
                       {

                           Dictionary<string, string> data = new Dictionary<string, string>();
                           data.Add("client_id", appId);
                           data.Add("client_secret", appSecret);
                           data.Add("code", code);
                           data.Add("grant_type", "authorization_code");
                           data.Add("redirect_uri", redirectUri);
                           ...

1 Ответ

0 голосов
/ 14 июня 2018

У меня была похожая ситуация.Я привязал RedirectToIdentityProvider, чтобы изменить RedirectUri перед отправкой запроса провайдеру идентификации.Что-то вроде следующего

Notifications = new OpenIdConnectAuthenticationNotifications()
  { 
    RedirectToIdentityProvider = async (context) =>
      {
        context.ProtocolMessage.RedirectUri = "Whatever_You_Want_Here";
      }
  }
...