Rails의 2단계 인증 Gem Devise-Two-Factor의 데모를 만져 보았다
7016 단어 Devise-Two-Factor젬루비Rails4
Rails의 2단계 인증
2단계 인증을 구현하기 쉽게 하는 Gem은 몇 종류나 나돌고 있는 것 같습니다. 신뢰할 수 있는 WEB 서비스에는 대체로 2단계 인증 기능이 붙어 있지 않습니까?
이 두 가지로 헤매었습니다만, 프로젝트에서 Devise를 사용하고 있다면, Devise-Two-Factor 쪽이 궁합 좋지 않아?
그래서 Devise-Two-Factor를 채용하기로 했습니다.
실제로 Devise-Two-Factor는 rotp를 래핑하여 해시 값을 만들 때 rotp를 사용합니다.
당사의 제품에 통합하면 또 별도로 정리를 만들려고합니다.
환경 및 버전
Mac OS Ⅹ Yosemite
Rails: 4.1.0
Ruby: 2.1.5p273
절차
보통 리포지토리에서 git clone
로 떨어지고 와서, 우선 디폴트의 Gemfile로 bundle install
해 보았습니다.
그러면 pg(PostgreSQL)의 config 파일이 없으면 굉장히 화나게 됩니다. PostgreSQL에 대해 그다지 밝지 않기 때문에, 저는 간편한 SQLite3로 변경했습니다.
데모의 기본 DB는 PostgreSQL입니다. 코멘트 아웃하고 SQLite로 바꾸자.
Gemfile# gem 'pg'
gem 'sqlite3'
config/database.ymldefault: &default
adapter: sqlite3 # postgresql
encoding: unicode
# For details on connection pooling, see rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: 5
그런 다음 명령줄 작업으로 이동합니다.
보통 리포지토리에서
git clone
로 떨어지고 와서, 우선 디폴트의 Gemfile로 bundle install
해 보았습니다.그러면 pg(PostgreSQL)의 config 파일이 없으면 굉장히 화나게 됩니다. PostgreSQL에 대해 그다지 밝지 않기 때문에, 저는 간편한 SQLite3로 변경했습니다.
데모의 기본 DB는 PostgreSQL입니다. 코멘트 아웃하고 SQLite로 바꾸자.
Gemfile
# gem 'pg'
gem 'sqlite3'
config/database.yml
default: &default
adapter: sqlite3 # postgresql
encoding: unicode
# For details on connection pooling, see rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: 5
그런 다음 명령줄 작업으로 이동합니다.
bundle install
bundle exec rake db:migrate
로 DB, 테이블을 작성합니다. rails c
에서 User
를 입력하여 제대로 속성이 있는지 확인해 봅시다. rails s
에서 서버를 시작합니다. 디폴트 3000번 포트를 다른 프로젝트에서 사용하고 있었으므로 rails s -p 3003
로 3003번에 액세스. 매우 간단하지만 안전한 브라우저로 표시되었습니다.
Sign up 해 봅시다.
로그인에 성공하면 Enable 2FA 버튼이 나타납니다.
users_controller.rb
class UsersController < ApplicationController
#
# other code...
#
def enable_otp
current_user.otp_secret = User.generate_otp_secret
current_user.otp_required_for_login = true
current_user.save!
redirect_to home_index_path
end
end
2단계 인증을 활성화하는 것은
enable_otp
메소드입니다.User.generate_otp_secret
에서 해시 값을 만들고 저장합니다.Enable 2FA를 누르자!
Demo에는 해시 값을 QR 코드로 변환해주는 gem 'rqrcode-rails3'이 들어 있습니다.
처음부터 QR 코드를 생성하도록 View에 기재되어 있으므로 Enable 2FA에서 다음 화면으로 전환하면 QR 코드가 표시됩니다.
index.html.erb
<% if current_user.otp_required_for_login %>
<%= button_to "Disable 2FA", users_disable_otp_path, :method => :post %>
<%= raw RQRCode::render_qrcode(current_user.otp_provisioning_uri(current_user.email, issuer: "Devise-Two-Factor-Demo"),
:svg,
:level => :l,
:unit => 2) %>
이것을 GoogleAuthenticator에서 읽어 보면 ...
했어.
여기에 표시된 주소는 다른 때에 캡처한 것이므로 다른 것이 입력되어 있습니다만, 실제로는 가입시에 등록한 주소가 표시됩니다.
이 일회성 경로를 입력하면 2단계 인증이 완료됩니다.
한 번 로그아웃하여 제대로 표시된 번호로 로그인할 수 있는지 확인해 봅시다.
요약
Devise로 로그인 인증이나 세션 관리하고 있다면, 추천 Gem이라고 생각합니다.
만약 SMS등으로 번호를 단말에 통지하는 등의 기능을 붙이고 싶은 경우는 각 휴대 캐리어에의 요금이나 통신이 발생하므로, 별도 서비스와의 계약이 필요합니다.
최근에는 Twilio 등이 자주 사용되고 있는 것 같네요.
Twilio for KDDI Web Communications | 클라우드 전화 API
Qiita나 Github도 2단계 인증을 구현하고 있으므로, 꼭 해보면 좋을지도 모릅니다! 보안이 매우 중요한 요소인 시대이기 때문에...
그럼 또.
Reference
이 문제에 관하여(Rails의 2단계 인증 Gem Devise-Two-Factor의 데모를 만져 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Momozono/items/17d71412ecdedcb0870c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Rails의 2단계 인증 Gem Devise-Two-Factor의 데모를 만져 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Momozono/items/17d71412ecdedcb0870c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)