Служба пользовательских токенов безопасности — реализация

Я работаю над проектом MVC 4. На самом деле проект включает в себя 3 модуля, которые общаются друг с другом. Пользователь может купить лицензию на любой из 3-х модулей или на все сразу. Мне нужно реализовать единый вход для веб-сайта, который мы создаем. Поэтому мы решили использовать Security Token Service, так как это будет более безопасно.

Я читал о STS, и у меня есть базовые знания о том, как это работает. Но проблема возникает, когда мне нужно реализовать это в реальном проекте. Честно говоря, я действительно не знаю, как это реализовать. Может ли кто-нибудь сказать мне, как реализовать пользовательскую STS? (Я работаю над .NET framework 4.5, MVC 4 и Visual Studio 2012).

Насколько я понимаю, все, что мне нужно, это унаследовать ClaimsAuthenticationManager и переопределить метод Authenticate? (Поправьте меня если я ошибаюсь). Если это так, где я могу проверить имя пользователя и пароль? Я уже сделал небольшую реализацию

public override ClaimsPrincipal Authenticate(string resourceName, ClaimsPrincipal incomingPrincipal)
    {
        if (!incomingPrincipal.Identity.IsAuthenticated)
        {
            return base.Authenticate(resourceName, incomingPrincipal);
        }
        return DressUpPrincipal(incomingPrincipal.Identity.Name);
    }

в приведенном выше коде incomingPrincipal.Identity.IsAuthenticated всегда false. Как мне аутентифицировать пользователя в первую очередь?


person Shankar    schedule 11.06.2014    source источник


Ответы (1)


Я бы посоветовал вам взглянуть на IdentityServer.

Thinktecture IdentityServer — это облегченная служба токенов безопасности, созданная с использованием .NET 4.5, MVC 4, Web API и WCF.

person pepo    schedule 11.06.2014
comment
Спасибо за быстрый ответ пепо. На самом деле я уже прошел через thinktecture. Проблема в том, что когда мне нужно создать нового пользователя для моего веб-сайта, мне нужно зайти в thinktecture, чтобы сделать это. Но мне нужно иметь возможность создавать пользователей на моем собственном сайте. Это возможно? - person Shankar; 11.06.2014
comment
Да, это так. IdentityServer имеет множество точек расширения. Вы можете настроить его (реализовав некоторый интерфейс) для использования собственной базы данных с пользователями. Подробнее о расширении IdentityServer см. здесь. Положительным моментом является то, что вам не нужно реализовывать всю логику безопасности (STS), а нужно лишь выполнить некоторую стыковку между вашим управлением пользователями и IdentityServer. - person pepo; 11.06.2014