Silverlight RIA Services - как выполнить аутентификацию Windows? - PullRequest
5 голосов
/ 19 сентября 2009

Я создаю свое первое приложение Silverlight 3 + RI Services и мне нужна помощь.
Он будет развернут в контролируемой корпоративной интрасети, на 100% Windows-клиентах. Я начал с шаблона бизнес-приложения Silverlight.
Это мои требования:

  1. После запуска приложение должно распознать текущего пользователя.
  2. Приложению необходимо иметь доступ к другим свойствам пользователя в AD, таким как электронная почта, полное имя и членство в группах.
  3. Членство в группах используется для определения определенных функций приложения.
  4. Ссылка «войти в систему как другой пользователь» должна быть всегда доступна - некоторые машины доступны по всему предприятию, вошедшие в систему как определенный общий пользователь (подтверждается отсутствием определенных групп членства). В этом случае можно ввести учетные данные и войти (олицетворять) в приложение как пользователь, отличный от того, кто уже вошел в систему на компьютере.
  5. Этот пользователь должен использоваться в сервисных звонках


Я изменил следующее в шаблоне бизнес-приложения по умолчанию:

  1. App.xaml: appsvc: проверка подлинности Windows вместо стандартной проверки подлинности Forms
  2. Web.config: режим аутентификации = "Windows"

С этими изменениями я решаю требование № 1 (получить текущего пользователя, вошедшего в систему). Но когда я проверяю RiaContext.Current.User, у меня нет доступа к другим свойствам из AD, таким как членство в группах. Как я могу выполнить другие мои требования?

Спасибо за вашу помощь.

Ответы [ 3 ]

4 голосов
/ 03 октября 2009

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

Просмотрите страницу 13.3 документа «Обзор услуг RIA» и дайте мне знать, если вам нужна помощь.

Мы только что приступили к внедрению приложения RIA Services и написали свой собственный пользовательский провайдер членства и профильный провайдер, поэтому дайте мне знать, если вам нужна помощь.

3 голосов
/ 11 июня 2010

Привет всем, есть новая статья на MSDN, сейчас я работаю над ней.

http://msdn.microsoft.com/en-us/library/ee707353(VS.91).aspx

3 голосов
/ 23 апреля 2010

Вот как я взломал его на сервисе аутентификации, предоставляемом BusinessApplicationTemplate.

 [EnableClientAccess]
    public class AuthenticationService : AuthenticationBase<User> {

    protected override User  GetAuthenticatedUser(System.Security.Principal.IPrincipal principal)
    {
        User user = base.GetAuthenticatedUser(principal);
        Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
        SystemWebSectionGroup grp = (SystemWebSectionGroup)config.GetSectionGroup("system.web");
        AuthenticationSection auth = grp.Authentication;
        if (auth.Mode == AuthenticationMode.Forms)
        {
        }
        else if (auth.Mode == AuthenticationMode.Windows)
        {
            string[] a = user.Name.Split('\\');
            System.DirectoryServices.DirectoryEntry ADEntry = new System.DirectoryServices.DirectoryEntry("WinNT://" + a[0] + "/" + a[1]);
            string Name = ADEntry.Properties["FullName"].Value.ToString();
            user.Name = Name;
        }
        return user;
    }
}
...