지난주에 배웠어요. 루비온 rails-omniauth-Google auth2
우리 시작합시다!
이 프로젝트의 경우 타사 로그인/등록을 위한 Ruby on Rails 프로그램을 만듭니다.솔직히 말해서, 내가 이 요구를 처음 읽었을 때, 나는 매우 긴장했다.지금, 이 OAuth 다리의 끝에서, 나는 그것이 그렇게 복잡해 보이지 않는다고 말할 수 있지만, 여전히 매우 까다롭다.
기술 용어로 OAuth는 액세스 권한을 부여받는 개방 표준으로 인터넷 사용자가 권한을 부여받은 사이트나 응용 프로그램이 다른 사이트의 정보를 방문하지만 비밀번호를 주지 않는다.이 표준을 프로그램에 적용하는 장점 중 하나는 암호와 같은 기밀 사용자 정보를 서버에 저장할 필요가 없다는 것이다.반면 제3자 공급자(구글, Github, 페이스북)는 개발자를 위해 신분 검증을 처리합니다.
제가 아까 말씀드렸던 악수 기억나세요?이것이 바로 그것이 작용하는 곳이다.OAuth가 정상적으로 작동하기 위해서는 사용자, OAuth 서버, 자원 서버 간의 협의가 필요합니다.만약 모든 '악수' 와 모든 '내가 눌렀다' 면 자원 서버는 요청한 자원을 사용자에게 되돌려줍니다.
Google 클라이언트 ID 및 Google 클라이언트 기밀 설정
첫걸음바로가기Google Developer Console
두 번째 단계.화면 오른쪽에 있는 메뉴를 사용하여 API 및 서비스로 이동
세 번째.클릭 증명서
네 번째 단계.웹 페이지의 오른쪽을 훑어보고 "항목 만들기"를 누르십시오
다섯 번째.구글은 프로젝트 이름을 입력해야 하는 새로운 페이지로 안내할 것이다
여섯 번째.항목 이름을 선택하고 "만들기"를 누르면 다음 페이지로 이동합니다
일곱 번째.화면 오른쪽에 있는 메뉴를 사용하여 자격 증명 버튼으로 이동하여 클릭합니다.그러면 새 페이지로 리디렉션됩니다.
여덟 번째.페이지 상단에서 자격 증명 작성을 클릭하면 드롭다운 메뉴가 나타납니다."OAuth 클라이언트 ID"를 눌러야 합니다.
아홉 번째.구글이 당신에게 동의 화면을 설정하라고 요구할 수도 있습니다.사용자 유형을 선택해야 하는 경우 외부를 선택하는 것이 좋습니다.일단 네가 선택을 한다면, 너는 다음 페이지로 방향을 바꿀 것이다.이 페이지에 응용 프로그램 이름 한 번과 전자 메일 주소 두 번(다른 내용 없음)을 입력한 다음 저장합니다.
열 번째.요약에 도달할 때까지 앞의 단계를 건너뛰고 저장 을 클릭합니다.이제 모든 게 다 준비됐어요. 우리 다시...
11번.화면 오른쪽에 있는 메뉴를 사용하여 자격 증명으로 이동하여 클릭합니다.
12번.페이지 상단에서 자격 증명 작성을 클릭하면 드롭다운 메뉴가 나타납니다."OAuth 클라이언트 ID"를 눌러야 합니다.
13번.응용 프로그램 유형을 선택하고 항목 이름을 입력하며 승인된 리디렉션 URI를 제공하도록 리디렉션됩니다.정보를 저장하면 구글 클라이언트 ID와 구글 클라이언트 비밀번호를 표시하는 팝업 창이 나타납니다.
URI 리디렉션 라이센스 예: http://localhost:3000/auth/google_oauth2/callback
그만 둬!
상술한 정보를 반드시 누구와도 공유하지 마라.만약 당신의 고객 id/고객 비밀번호를 잊어버리거나 더 나쁜 것은 나쁜 사람의 손에 빠질 수도 있다는 것입니다. Google과 악수는 일어나지 않을 것입니다.
백엔드 프로세스
이제 Google 클라이언트 ID와 비밀번호가 생겨서 Google 프로그램에서 모든 것을 연결할 수 있습니다.
루비 필요:
gem 'omniauth'
gem 'omniauth-rails_csrf_protection'
gem 'omniauth-google-oauth2'
gem 'dotenv'
=>개발 환경에 추가모든 파일이 설정된 후에 다음 단계는 환경 변수를 처리하는 것입니다.
이 과정의 이 부분은'악수'의 또 다른 중요한 부분이므로 주의하십시오
먼저 터미널 프로그램 디렉터리의 루트 디렉터리에 들어가서
touch .env
를 입력하십시오.이것은 프로젝트의 루트 디렉터리에 환경 파일을 만들 것입니다.파일이 실제로
root
디렉토리에 있는지 확인하면 로 이동합니다.gitignore 파일은 루트 디렉토리에 있으며 "Ignore master key for decrypting credentials and more"를 표시하는 위치로 아래로 스크롤합니다이 섹션에 .env
을 입력하고 파일을 저장합니다.이 절차는 파일이 원격 Github 저장소에 제출되지 않도록 합니다.왜 이 .env
파일을 원격 저장소에 저장하지 않는 것이 중요합니까?이전에 블로그에서 만든 Google 클라이언트 ID와 비밀번호를 여기에 저장하기 때문입니다..env
파일에서 aove 정보를 다음 형식으로 입력합니다.GOOGLE_CLIENT_ID=<google-client-id>
GOOGLE_CLIENT_SECRET=<google-client-id>
다음에 config\initializers
로 이동하여 omniauth.rb
라는 새 파일을 만듭니다.이 파일에서 다음 중간부품을 작성합니다. (표준 문법입니다.)Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, ENV['GOOGLE_CLIENT_KEY'], ENV['GOOGLE_CLIENT_SECRET']
end
위의 환경 변수 이름은 의 환경 변수 이름과 일치해야 합니다.우리가 이전에 만든 환경 파일입니다.상술한 작업을 끝낸 후 설정 디렉터리의routes 파일로 이동합니다.이 슬라이드에서는 타사 공급업체가 서버에 응답할 때 라우트를 설정해야 합니다.
get "/auth/google_oauth2/callback" => 'sessions#omniauth'
다음 단계는 세션 컨트롤러로 가서 두 개의 동작을 만듭니다. "omniauth"와 "private"def omniauth
#find_or_create a customer using the attribute auth
@customer = Customer.find_or_create_by(email: auth["info"]["email"]) do |customer|
customer.full_name = auth["info"]["name"]
customer.password = SecureRandom.hex(10)
end
if @customer.save
session[:customer_id] = @customer.id
redirect_to customer_path(@customer).error.inspect
else
redirect_to '/'
end
end
private
def auth
request.env['omniauth.auth']
end
위의 코드를 통해 구글이 우리 서버에 대한 고객 정보 요청에 대한 응답을 볼 수 있다.일단 네가 위의 코드를 실현하면, 너는 만사대길할 것이다.터미널에 들어가서 "dotenv rails 서버"를 입력한 다음 브라우저를 통해 로컬 호스트에 들어갑니다.
Cuts-4-Less GitHub Repository
출처
https://en.wikipedia.org/wiki/OAuth
https://en.wikipedia.org/wiki/Handshake
Reference
이 문제에 관하여(지난주에 배웠어요. 루비온 rails-omniauth-Google auth2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/reyes2981/what-i-learned-last-week-ruby-on-rails-omniauth-googleauth2-12g2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)