OpenRasta - рабочий пример базовой аутентификации Скотта Литлвуда - PullRequest
3 голосов
/ 08 ноября 2010

Я проверяю целесообразность использования OpenRasta как жизнеспособной альтернативы ASP.NET MVC. Однако я столкнулся с камнем преткновения в отношении аутентификации.

Позвольте мне прояснить, "Аутентификация с открытым дайджестом" НЕ является опцией на данный момент.

Я читал, что Скотт Литтлвуд создал базовый форк аутентификации для OpenRasta, и я скачал исходный код из git и успешно его собрал.

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

//Authentication.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using OpenRasta;
using OpenRasta.Configuration;
using OpenRasta.Authentication;
using OpenRasta.Authentication.Basic;
using OpenRasta.Configuration.Fluent;
using OpenRasta.DI;

namespace myOpenRastaTest.Extensions
{
    public static class ExtensionsToIUses
    {
        public static void BasicAuthentication<TBasicAuthenticator>(this IUses uses) where TBasicAuthenticator : class, IBasicAuthenticator
        {
            uses.CustomDependency<IAuthenticationScheme, BasicAuthenticationScheme>(DependencyLifetime.Transient);

            uses.CustomDependency<IBasicAuthenticator, TBasicAuthenticator>(DependencyLifetime.Transient);
        }
    }

    public class CustomBasicAuthenticator : IBasicAuthenticator
    {
        public string Realm { get { return "stackoverflow-realm"; } }

        public CustomBasicAuthenticator()
        {            
        }

        public AuthenticationResult Authenticate(BasicAuthRequestHeader header)
        {
            /* use the information in the header to check credentials against your service/db */
            if (true)
            {
                return new AuthenticationResult.Success(header.Username);
            }

            return new AuthenticationResult.Failed();
        }
    }
}

Теперь, чтобы проверить это, я просто создал экземпляр CustomBasicAuthenticator в моем HomeHandler.cs:

//HomeHandler.cs
using System;
using myOpenRastaTest.Resources;

namespace myOpenRastaTest.Handlers
{
    public class HomeHandler
    {
        public object Get()
        {
            var custAuth = new myOpenRastaTest.Extensions.CustomBasicAuthenticator();

            return new HomeResource();
        }
    }
}

Итак, мне нужно знать, какие шаги мне нужно предпринять дальше, поэтому я и спрашиваю о реальной рабочей модели, а не просто о теоретических ответах, поскольку я только что наткнулся на структуру 2 дня назад и, возможно, не знаю всех фреймворк OpenRasta, RESTful lingo, который вы можете бросить мне в ответ:)

Как только я получу представление об аутентификации, у меня будет хорошее представление о том, как приступить к оценке того, следует ли переносить существующий прототип портала asp.net в OpenRasta или нет.

Заранее спасибо ...

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

У меня есть пример приложения, использующего новый процесс аутентификации OpenRasta, который на данный момент поддерживает ТОЛЬКО базовую аутентификацию.

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

См. Это обсуждение на github для дальнейшего использования: https://github.com/scottlittlewood/openrasta-stable/commit/25ee8bfbf610cea17626a9e7dfede565f662d7bb#comments

Для рабочего примера проверьте код здесь: https://github.com/scottlittlewood/OpenRastaAuthSample

Надеюсь, это поможет

1 голос
/ 09 ноября 2010

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

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

...