Rails: использование другого входа в систему с блогом Enki - PullRequest
1 голос
/ 07 января 2012

Я пытаюсь создать блог с Rails и очень люблю Enki www.Enkiblog.com.Однако меня немного смущает система аутентификации, которую он использует с Open Id.В процессе разработки он позволяет обойти аутентификацию, но для производства требуется использовать сервер OpenId enter image description here

Я надеюсь включить в него более простую систему аутентификации, но не знаюесли это проще (я нуб) или лучше попытаться выяснить, как настроить сервер OpenId (который требует дополнительной установки)

Я посмотрел на сервер Open Id под названием Masquerade, но этополностью смутил меняЯ не уверен, что это то, что я пытаюсь внедрить в Enki (например, Rails Engine) или это совершенно отдельное приложение.

Есть мысли, как можно упростить аутентификацию или как ее можно упростить, чтобы нуб мог ее использовать?

Это файл enki.yml, который настраивается для аутентификации OpenId в Enki.

   # Configuration options for your blog - customise to taste
    # This file contains no secret information, so can be stored in source control (unlike database.yml)
    title: My Enki Blog
    url:   http://enkiblog.com
    author:
      name:    Don Alias        # For copyright notice and ATOM feeds
      email:   don@enkiblog.com # Exception emails will go here, and it is used in ATOM feeds
      open_id:                  # These are used to login to the admin area
          - http://enkiblog.com
          - http://secondaryopenid.com

    # Delete the following section if your site will not be acting as an OpenID delegate (http://wiki.openid.net/Delegation)
    # If you're deploying with mongrel, make sure you read http://rhnh.net/2008/04/13/nginx-openid-delegation-and-yadis
    open_id_delegation:
      server:   http://www.myopenid.com/server
      delegate: http://username.myopenid.com

Это действие create из администратора / сессий контроллера, который выполняет эту аутентификацию

def create
    return successful_login if allow_login_bypass? && params[:bypass_login]

    if params[:openid_url].blank? && !request.env[Rack::OpenID::RESPONSE]
      flash.now[:error] = "You must provide an OpenID URL"
      render :action => 'new'
    else
      authenticate_with_open_id(params[:openid_url]) do |result, identity_url|
        if result.successful?
          if enki_config.author_open_ids.include?(URI.parse(identity_url))
            return successful_login
          else
            flash.now[:error] = "You are not authorized"
          end
        else
          flash.now[:error] = result.message
        end
        render :action => 'new'
      end
    end
  end

Ответы [ 2 ]

0 голосов
/ 08 мая 2012

Вы можете фактически извлечь OpenID аутентификацию из Enki, взломав код.Мне удалось это сделать (Rails newbie), так что это не так уж и сложно.

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

0 голосов
/ 22 февраля 2012

Все, что вам нужно, это открытый идентификатор в Google (URL вашего профиля) или в любом из поставщиков открытого идентификатора в openid.net .Как только вы нашли URL открытого идентификатора, все, что вам нужно сделать, это открыть config / enki.yml и изменить значение открытого идентификатора на ваш открытый идентификатор URL.Например:

open_id:                  # These are used to login to the admin area
    - https://plus.google.com/102381073183096542549

Теперь, чтобы войти в админ-панель, просто введите URL своего профиля.Он может попросить вас войти на сайт вашего провайдера открытых идентификаторов, например google.com, а затем запросить разрешения для yourblog.com .После предоставления вам будет предоставлен доступ администратора.Никто другой не сможет получить доступ к административной области, поскольку вы ограничили ее open_id в enki.yml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...