이것은 Omniauth의 개발 지점에 대한 문서입니다. 최신 안정 릴리스에 대한 설명서를 여기에서 찾을 수 있습니다.
Omniauth는 웹 애플리케이션을위한 다중 제공자 인증을 표준화하는 라이브러리입니다. 그것은 강력하고 유연하며 가능한 한 적게 행동하도록 만들어졌습니다. 모든 개발자는 이질적인 시스템을 통해 사용자를 인증 할 수있는 OMNIAUTH 전략을 만들 수 있습니다. Facebook에서 LDAP에 이르기까지 Omniauth 전략이 만들어졌습니다.
응용 프로그램에서 Omniauth를 사용하려면 하나 이상의 전략을 활용해야합니다. 이러한 전략은 일반적으로 RubyGems로 개별적으로 공개 되며이 프로젝트의 위키에 커뮤니티 유지 관리 목록을 볼 수 있습니다.
Developer 라고 불리는 하나의 전략은 Omniauth에 포함되어 있으며, 인증 정보를 위해 사용자에게 직접 촉구 한 다음 바로 통과하는 완전히 안전하지 않은 비 생산 가능한 전략을 제공합니다. 개발을 시작할 때 자리 표시 자로 사용할 수 있고 나중에 다른 전략을 쉽게 교체 할 수 있습니다.
각 OMNIAUTH 전략은 랙 미들웨어입니다. 즉, 다른 랙 미들웨어를 사용하는 것과 같은 방식으로 사용할 수 있습니다. 예를 들어, Sinatra 응용 프로그램에서 내장 개발자 전략을 사용하려면 다음을 수행 할 수 있습니다.
require 'sinatra'
require 'omniauth'
class MyApplication < Sinatra :: Base
use Rack :: Session :: Cookie
use OmniAuth :: Strategies :: Developer
end Omniauth는 다중 제공자 인증을 위해 구축되었으므로 여러 전략을 실행할 공간을 떠날 수 있습니다. 이를 위해 내장 OmniAuth::Builder 클래스는 여러 전략을 쉽게 지정할 수있는 방법을 제공합니다. 다음 코드와 각 전략을 개별적으로 미들웨어로 사용하는 것에는 차이가 없습니다 . 이것은 config/initializers/omniauth.rb 에서 Rails 이니셜 라이저에 넣을 수있는 예입니다.
Rails . application . config . middleware . use OmniAuth :: Builder do
provider :developer unless Rails . env . production?
provider :twitter , ENV [ 'TWITTER_KEY' ] , ENV [ 'TWITTER_SECRET' ]
end특정 초기화 요구 사항에 사용하는 각 제공자의 문서를 살펴 봐야합니다.
Omniauth는 매우 낮은 터치 라이브러리입니다. 인증이 필요할 때 응용 프로그램 사용자를 보낼 수있는 블랙 박스로 설계된 다음 정보를받을 수 있습니다. Omniauth는 의도적으로 사용자 모델과 자동으로 연결하지 않거나 사용하려는 인증 방법의 수 또는 사용자가 인증 한 후에는 데이터와 관련하여 수행 할 수있는 방법에 대한 가정을하지 않기 위해 구축되었습니다. 이것은 Omniauth를 엄청나게 유연하게 만듭니다. OMNIAUTH를 사용하려면 사용자를 /auth/:provider 로 리디렉션하면됩니다. 여기서 :provider 전략의 이름입니다 (예 : developer 또는 twitter ). 거기에서 Omniauth는 필요한 단계를 통해 사용자를 대신하여 선택한 전략으로이를 인증합니다.
사용자가 인증 한 후에는 다음에 무엇을합니까? Omniauth는 단순히 /auth/:provider/callback 대한 요청의 랙 환경에서 인증 해시라는 특수 해시를 설정합니다. 이 해시에는 Omniaud가 사용 된 전략에서 수집 할 수있는만큼 사용자에 대한 많은 정보가 포함되어 있습니다. 응용 프로그램에서 콜백 URL과 일치하는 엔드 포인트를 설정 한 다음 응용 프로그램에 필요한 모든 단계를 수행해야합니다.
omniauth.auth 키 환경 해시의 키는 고유 한 ID, 인증에 방금 사용한 전략, 이름 및 이메일 주소와 같은 개인 정보를 포함하여 정당한 인증 된 사용자에 대한 정보를 포함하는 인증 해시를 제공합니다. 인증 해시에 포함 할 수있는 내용에 대한 심층적 인 설명은 Auth Hash Schema Wiki 페이지를 참조하십시오.
Omniauth는 콜백 요청에 대한 환경 정보를 설정하는 것 이외의 조치를 수행하지 않습니다. 응용 프로그램 인증 흐름의 세부 사항을 구현하는 방법은 전적으로 귀하에게 달려 있습니다.
omniauth rack_csrf와 ootb 호환되지 않습니다. 그렇게하려면 다음 코드를 응용 프로그램 부트 스트랩 코드에 추가해야합니다.
OmniAuth :: AuthenticityTokenProtection . default_options ( key : "csrf.token" , authenticity_param : "_csrf" ) 시작하려면 다음 보석을 추가하십시오
gemfile :
gem 'omniauth'
gem "omniauth-rails_csrf_protection"그런 다음 Omniauth를 미들웨어로 삽입하십시오
config/seitentizers/omniauth.rb :
Rails . application . config . middleware . use OmniAuth :: Builder do
provider :developer if Rails . env . development?
end향후 추가 제공 업체를 여기에 추가 할 수 있습니다. 다음으로 경로, 컨트롤러 및 로그인보기를 사용하여 모든 것을 연결합니다.
config/lours.rb :
get 'auth/:provider/callback' , to : 'sessions#create'
get '/login' , to : 'sessions#new'앱/컨트롤러/sessions_controller.rb :
class SessionsController < ApplicationController
def new
render :new
end
def create
user_info = request . env [ 'omniauth.auth' ]
raise user_info # Your own session management should be placed here.
end
end앱/뷰/세션/new.html.erb :
<%= form_tag('/auth/developer', method: 'post', data: {turbo: false}) do %>
< button type =' submit ' > Login with Developer </ button >
<% end %> 이제 방문 /login 하고 로그인 버튼을 클릭하면 Omniauth 개발자 로그인 화면이 표시됩니다. 제출 한 후 Sessions#create 에서 신청서로 반환됩니다. 인상은 이제이를 자신의 사용자 관리에 통합 할 수있는 모든 OMNIAUUT 세부 정보를 표시해야합니다.
Box에서 사용자 관리를 원한다면 Devise를 통해 Omniauth 사용을 고려해야합니다. 자세한 내용은 Devise Github 페이지를 방문하십시오.
다음 미들웨어는 (기본적으로) Rails 응용 프로그램의 세션 관리에 포함됩니다. Rails API와 함께 Omniauth를 사용할 때 필요한 미들웨어 중 하나를 다시 추가해야합니다.
ActionDispatch::Session::CacheStoreActionDispatch::Session::CookieStoreActionDispatch::Session::MemCacheStore 이것을 다시 추가하는 트릭은 기본적으로 추가시 (세션 키 포함) session_options 가 전달되므로 session_store.rb 이니셜 라이저를 추가 할 수 없으며 use ActionDispatch::Session::CookieStore 추가 할 수 없으며 정상으로 작동하는 세션이 있습니다.
분명히 : 세션은 작동 할 수 있지만 세션 옵션은 무시됩니다 (예 : 세션 키는 _session_id 로 기본값). 이니셜 라이저 대신에 미들웨어가 구축되기 전에 어딘가에 관련 옵션을 설정하고 ( application.rb 와 같은) 선호하는 미들웨어로 전달해야합니다.
application.rb :
config . session_store :cookie_store , key : '_interslice_session'
config . middleware . use ActionDispatch :: Cookies # Required for all session management
config . middleware . use ActionDispatch :: Session :: CookieStore , config . session_options(감사합니다 @mltsy)
Omniauth는 구성 가능한 로거를 지원합니다. 기본적으로 Omniauth는 STDOUT 에 로그인하지만 OmniAuth.config.logger 사용하여이를 구성 할 수 있습니다.
# Rails application example
OmniAuth . config . logger = Rails . logger origin URL 매개 변수는 일반적으로 사용자가 어디에서 왔는지, 어디에서 사용 해야하는지, 어디에서 사용 해야하는지 알려주는 데 사용됩니다. Omniauth는 제공자 수준에서 구성 할 수있는 다음 설정을 지원합니다.
기본 :
provider :twitter , ENV [ 'KEY' ] , ENV [ 'SECRET' ]
POST /auth/twitter /?o rigin = [ URL ]
# If the `origin` parameter is blank, `omniauth.origin` is set to HTTP_REFERER다른 이름의 Origin 매개 변수 사용 :
provider :twitter , ENV [ 'KEY' ] , ENV [ 'SECRET' ] , origin_param : 'return_to'
POST /auth/twitter /?r eturn_to = [ URL ]
# If the `return_to` parameter is blank, `omniauth.origin` is set to HTTP_REFERER장애가 있는 :
provider :twitter , ENV [ 'KEY' ] , ENV [ 'SECRET' ] , origin_param : false
POST /auth/twitter
# This means the origin should be handled by your own application.
# Note that `omniauth.origin` will always be blank. Omniauth Wiki는 Omniauth에 대한 심층적 인 문서를 적극적으로 유지했습니다. Omniauth에 대한 심층적 인 모습, 작동 방식 및 사용 방법에 대해 궁금한 점이 있다면 첫 번째 정지가되어야합니다.
TideLift 구독의 일부로 제공됩니다.
Omniauth의 관리자와 수천 개의 다른 패키지는 Tidelift와 협력하여 응용 프로그램을 구축하는 데 사용하는 오픈 소스 패키지에 대한 상업적 지원 및 유지 보수를 제공하고 있습니다. 사용하는 정확한 패키지의 관리자에게 비용을 지불하면서 시간을 절약하고 위험을 줄이며 코드 건강을 개선하십시오. 자세히 알아보십시오.
Omniauth는 2.5, 2.6, 2.7, 3.0, 3.1, 3.2, Truffleruby 및 Jruby에서 테스트됩니다.
이 라이브러리는 시맨틱 버전 2.0.0을 준수하는 것을 목표로합니다. 이 계획의 위반은 버그로보고해야합니다. 구체적으로, 뒤로 호환성이 나오는 마이너 또는 패치 버전이 릴리스되면 해당 버전은 즉시 YANKED를 사용하고/또는 호환성을 복원하는 새 버전을 즉시 해제해야합니다. 공개 API에 대한 변경 사항은 새로운 주요 버전으로 만 소개됩니다. 이 정책의 결과로, 당신은 두 자리의 정밀도를 가진 비관적 버전 제약을 사용 하여이 보석에 대한 의존성을 지정할 수 있습니다. 예를 들어:
spec.add_dependency 'omniauth', '~> 1.0'
Copyright (C) 2010-2017 Michael Bleigh and Intridea, Inc. 자세한 내용은 라이센스를 참조하십시오.