2015-03-11 12 views
3

У меня есть сайт WebForms, который был запущен на внутреннем сервере и аутентифицировал пользователей против нашей внутренней Active Directory. Из-за некоторых новых функций, которые мы реализуем, этот сайт необходимо перенести на внешний сервер, а затем изменить аутентификацию, чтобы он аутентифицировал пользователей в отношении наших учетных записей Office 365. Для этого у меня есть:Аутентификация WebForms против Azure AD

  1. Создан новый сайт WebForms (не используя MVC)
  2. Настройка нового приложения в Azure.
  3. Изменен Startup.Auth.cs следующим образом:

    public void ConfigureAuth(IAppBuilder app) 
    { 
        app.CreatePerOwinContext(ApplicationDbContext.Create); 
        app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); 
        app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create); 
    
        app.UseCookieAuthentication(new CookieAuthenticationOptions 
        { 
         AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
         LoginPath = new PathString("/Account/Login"), 
         Provider = new CookieAuthenticationProvider 
         { 
          OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
           validateInterval: TimeSpan.FromMinutes(30), 
           regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
         } 
        }); 
    
        app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 
        app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions { ClientId = "MyApplicationGUID", Authority = "https://login.windows.net/MyDomain.com" }); 
    

Когда я иду на страницу по умолчанию и нажмите кнопку Log On, он принимает меня к правильной странице входа и кнопка OpenID является показано на рисунке. Если я нажму кнопку, я перейду на страницу входа в Microsoft, где я могу ввести свои учетные данные. Однако в этот момент я перенаправлен на страницу входа на сайт, где он все еще запрашивает имя пользователя/пароль.

Что бы я хотел, чтобы установить сайт так, чтобы, если пользователь не прошел аутентификацию, они перенаправляются непосредственно на страницу входа в систему Microsoft и после успешного входа перенаправляются обратно на страницу, которую они запрашивали первоначально. В противном случае я был бы доволен тем, что страница входа в систему по умолчанию работает так, что когда я нажимаю OpenID, я не перенаправляюсь обратно на страницу входа.

У меня нет времени, чтобы узнать MVC в этот момент и передать все это, поэтому переход на этот маршрут в данный момент не является вариантом.

Я не знаю достаточно об этом процессе, поэтому, если мой вопрос не имеет смысла или вам нужна дополнительная информация, пожалуйста, дайте мне знать, и я буду рад попытаться найти то, что вам нужно, чтобы помочь мне в этом.

ответ

5

Возможно, мне что-то не хватает, но я не понимаю, зачем нужна пользовательская страница входа или внешний файл cookie. Типичная Startup.Auth для РСИНА/AAD выглядит примерно так:

app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); 
app.UseCookieAuthentication(new CookieAuthenticationOptions()); 

app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions 
    { 
     ClientId = "AppGUID", 
     Authority = "https://login.windows.net/MyDomain.com", 

     // After authentication return user to the page they were trying 
     // to access before being redirected to the Azure AD signin page. 
     Notifications = new OpenIdConnectAuthenticationNotifications() 
     { 
      RedirectToIdentityProvider = (context) => 
       { 
        string currentUrl = context.Request.Scheme + "://" + context.Request.Host + context.Request.Path; 
        context.ProtocolMessage.RedirectUri = currentUrl; 

        return Task.FromResult(0); 
       } 
     } 
    }); 

Куки аутентификация просто, чтобы не идти на AAD для каждого запроса. Вся реальная работа происходит в OpenIdConnectAuthentication.

Вот пример WebForms, Azure AD, и OpenID Connect:

http://www.cloudidentity.com/blog/2014/07/24/protecting-an-asp-net-webforms-app-with-openid-connect-and-azure-ad/

+0

Спасибо. Это привело меня к тому, где я должен был быть. –

Смежные вопросы