Heroku에서 Rails/Basic 인증을 도입한다.
처음에
프로덕션 환경에서 Basic 인증을 도입하고 싶다고 생각했습니다.
AWS는 한 적이 있지만 Heroku가 아니었기 때문에 이번에 한 일을 기록하고 싶습니다.
Basic 인증이란?
웹사이트에 액세스 제한하는 데 있어서, 간이적으로 제한을 걸 수 있는 방법으로서 들 수 있는 것은 기본 인증(Basic 인증).
기본 인증(Basic 인증)은 웹 서버에 수반되는 기능 중 하나로 파일에 몇 줄의 설명을 하는 것만으로 간단하게 액세스 제한을 걸 수 있습니다.
기본 인증(Basic 인증)이란 웹사이트의 특정 영역, 즉 페이지나 파일에 액세스 제한을 걸 수 있는 인증 방법의 하나.
기본 인증을 거치면 인증을 걸었던 웹 사이트에 액세스하려고 할 때 위 이미지와 같은 인증 대화 상자가 시작되어 사용자 이름 (ID)과 암호를 입력해야합니다.
Basic 인증의 특징
· 장점
① 디렉토리 단위로의 액세스 제한이 가능
②인증 완료 후 브라우저를 닫을 때까지 유효
③ 브라우저가 로그인 정보를 기억
・단점
①보안 취약성
- ※인용-
기본 인증은 로그인 정보를 입력하여 전송할 때 "Base64"라는 문자 코드를 사용하여 통신합니다.
「Base64」는 간이적인 통신을 할 때의 문자 코드로, 알파벳·숫자·특정의 기호만의 64 종류의 문자가 이용 가능합니다.
즉, 기본 인증으로 입력한 로그인 정보는 「Base64」의 문자 코드로 표현할 수 있는 알파벳・숫자・기호로 통신되어 버립니다.
만약, 베이직 인증을 거친 웹 페이지가 「https」가 아니고, SSL 대응이 되어 있지 않은 「http」통신인 경우, 외부로부터 로그인 정보가 도청되기 쉬워지고 있기 때문에 주의가 필요합니다.
② 크롤러도 액세스할 수 없다
③서버를 넘은 설정을 할 수 없다
④ 스마트폰으로 로그인 정보를 저장할 수 없다
기본 설정 방법(Heroku에 배포)
모든 컨트롤러에서 Basic 인증을 하기 위해서 application_controller.rb에 코드를 추기.
Rails에는 Basic 인증을 하기 위한 이하의 메소드가 준비되어 있다.
'authenticate_or_request_with_http_basic'
이것이 Rails로 간단하게 Basic 인증을 구현해 주는 메소드.
app/controllers/application_controller.rbclass ApplicationController < ActionController::Base
before_action :basic_auth, if: :production?
private
def production? #←本番環境かローカルを区別する。
Rails.env.production?
end
def basic_auth
authenticate_or_request_with_http_basic do |username, password|
username == ENV['BASIC_AUTH_USER'] && password == ENV['BASIC_AUTH_PASSWORD']
end
end
end
환경 변수에 USER와 PASSWORD를 추가한다.
터미널.% vim ~/.bash_profile
#「i」を押してインサートモードにいく
#自分で設定したUSERとPASSWORDを以下の様に追記する。
export BASIC_AUTH_USER='USER'
export BASIC_AUTH_PASSWORD='PASSWORD'
#escキーを押し、「:wq」を押して保存
% sudo vim /etc/environment
Password: #←手持ちPCのパスワード
#「i」を押してインサートモードにいく
#自分で設定したUSERとPASSWORDを以下の様に追記する。
BASIC_AUTH_USER='USER'
BASIC_AUTH_PASSWORD='PASSWORD'
#escキーを押し、「:wq」を押して保存
#heroku configにてHeroku上に反映されているか確認する。
% heroku config
=== アプリ名 Config Vars
BASIC_AUTH_USER: 'USER'
BASIC_AUTH_PASSWORD: 'PASSWORD'
username == ENV['BASIC_AUTH_USER'] && password == ENV['BASIC_AUTH_PASSWORD']는 환경 변수로 하는 이유로서 환경 변수로 하지 않고 Github에 커밋 업하면 비밀번호를 한눈에 알 수 있기 때문.
배포 동작 확인
위의 방법으로 기본 인증을 설정할 수 있습니다.
Reference
이 문제에 관하여(Heroku에서 Rails/Basic 인증을 도입한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/morelife09/items/3a1bfb6a53eb58feae8d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
웹사이트에 액세스 제한하는 데 있어서, 간이적으로 제한을 걸 수 있는 방법으로서 들 수 있는 것은 기본 인증(Basic 인증).
기본 인증(Basic 인증)은 웹 서버에 수반되는 기능 중 하나로 파일에 몇 줄의 설명을 하는 것만으로 간단하게 액세스 제한을 걸 수 있습니다.
기본 인증(Basic 인증)이란 웹사이트의 특정 영역, 즉 페이지나 파일에 액세스 제한을 걸 수 있는 인증 방법의 하나.
기본 인증을 거치면 인증을 걸었던 웹 사이트에 액세스하려고 할 때 위 이미지와 같은 인증 대화 상자가 시작되어 사용자 이름 (ID)과 암호를 입력해야합니다.
Basic 인증의 특징
· 장점
① 디렉토리 단위로의 액세스 제한이 가능
②인증 완료 후 브라우저를 닫을 때까지 유효
③ 브라우저가 로그인 정보를 기억
・단점
①보안 취약성
- ※인용-
기본 인증은 로그인 정보를 입력하여 전송할 때 "Base64"라는 문자 코드를 사용하여 통신합니다.
「Base64」는 간이적인 통신을 할 때의 문자 코드로, 알파벳·숫자·특정의 기호만의 64 종류의 문자가 이용 가능합니다.
즉, 기본 인증으로 입력한 로그인 정보는 「Base64」의 문자 코드로 표현할 수 있는 알파벳・숫자・기호로 통신되어 버립니다.
만약, 베이직 인증을 거친 웹 페이지가 「https」가 아니고, SSL 대응이 되어 있지 않은 「http」통신인 경우, 외부로부터 로그인 정보가 도청되기 쉬워지고 있기 때문에 주의가 필요합니다.
② 크롤러도 액세스할 수 없다
③서버를 넘은 설정을 할 수 없다
④ 스마트폰으로 로그인 정보를 저장할 수 없다
기본 설정 방법(Heroku에 배포)
모든 컨트롤러에서 Basic 인증을 하기 위해서 application_controller.rb에 코드를 추기.
Rails에는 Basic 인증을 하기 위한 이하의 메소드가 준비되어 있다.
'authenticate_or_request_with_http_basic'
이것이 Rails로 간단하게 Basic 인증을 구현해 주는 메소드.
app/controllers/application_controller.rbclass ApplicationController < ActionController::Base
before_action :basic_auth, if: :production?
private
def production? #←本番環境かローカルを区別する。
Rails.env.production?
end
def basic_auth
authenticate_or_request_with_http_basic do |username, password|
username == ENV['BASIC_AUTH_USER'] && password == ENV['BASIC_AUTH_PASSWORD']
end
end
end
환경 변수에 USER와 PASSWORD를 추가한다.
터미널.% vim ~/.bash_profile
#「i」を押してインサートモードにいく
#自分で設定したUSERとPASSWORDを以下の様に追記する。
export BASIC_AUTH_USER='USER'
export BASIC_AUTH_PASSWORD='PASSWORD'
#escキーを押し、「:wq」を押して保存
% sudo vim /etc/environment
Password: #←手持ちPCのパスワード
#「i」を押してインサートモードにいく
#自分で設定したUSERとPASSWORDを以下の様に追記する。
BASIC_AUTH_USER='USER'
BASIC_AUTH_PASSWORD='PASSWORD'
#escキーを押し、「:wq」を押して保存
#heroku configにてHeroku上に反映されているか確認する。
% heroku config
=== アプリ名 Config Vars
BASIC_AUTH_USER: 'USER'
BASIC_AUTH_PASSWORD: 'PASSWORD'
username == ENV['BASIC_AUTH_USER'] && password == ENV['BASIC_AUTH_PASSWORD']는 환경 변수로 하는 이유로서 환경 변수로 하지 않고 Github에 커밋 업하면 비밀번호를 한눈에 알 수 있기 때문.
배포 동작 확인
위의 방법으로 기본 인증을 설정할 수 있습니다.
Reference
이 문제에 관하여(Heroku에서 Rails/Basic 인증을 도입한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/morelife09/items/3a1bfb6a53eb58feae8d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
모든 컨트롤러에서 Basic 인증을 하기 위해서 application_controller.rb에 코드를 추기.
Rails에는 Basic 인증을 하기 위한 이하의 메소드가 준비되어 있다.
'authenticate_or_request_with_http_basic'
이것이 Rails로 간단하게 Basic 인증을 구현해 주는 메소드.
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_action :basic_auth, if: :production?
private
def production? #←本番環境かローカルを区別する。
Rails.env.production?
end
def basic_auth
authenticate_or_request_with_http_basic do |username, password|
username == ENV['BASIC_AUTH_USER'] && password == ENV['BASIC_AUTH_PASSWORD']
end
end
end
환경 변수에 USER와 PASSWORD를 추가한다.
터미널.% vim ~/.bash_profile
#「i」を押してインサートモードにいく
#自分で設定したUSERとPASSWORDを以下の様に追記する。
export BASIC_AUTH_USER='USER'
export BASIC_AUTH_PASSWORD='PASSWORD'
#escキーを押し、「:wq」を押して保存
% sudo vim /etc/environment
Password: #←手持ちPCのパスワード
#「i」を押してインサートモードにいく
#自分で設定したUSERとPASSWORDを以下の様に追記する。
BASIC_AUTH_USER='USER'
BASIC_AUTH_PASSWORD='PASSWORD'
#escキーを押し、「:wq」を押して保存
#heroku configにてHeroku上に反映されているか確認する。
% heroku config
=== アプリ名 Config Vars
BASIC_AUTH_USER: 'USER'
BASIC_AUTH_PASSWORD: 'PASSWORD'
username == ENV['BASIC_AUTH_USER'] && password == ENV['BASIC_AUTH_PASSWORD']는 환경 변수로 하는 이유로서 환경 변수로 하지 않고 Github에 커밋 업하면 비밀번호를 한눈에 알 수 있기 때문.
배포 동작 확인
위의 방법으로 기본 인증을 설정할 수 있습니다.
Reference
이 문제에 관하여(Heroku에서 Rails/Basic 인증을 도입한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/morelife09/items/3a1bfb6a53eb58feae8d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
% vim ~/.bash_profile
#「i」を押してインサートモードにいく
#自分で設定したUSERとPASSWORDを以下の様に追記する。
export BASIC_AUTH_USER='USER'
export BASIC_AUTH_PASSWORD='PASSWORD'
#escキーを押し、「:wq」を押して保存
% sudo vim /etc/environment
Password: #←手持ちPCのパスワード
#「i」を押してインサートモードにいく
#自分で設定したUSERとPASSWORDを以下の様に追記する。
BASIC_AUTH_USER='USER'
BASIC_AUTH_PASSWORD='PASSWORD'
#escキーを押し、「:wq」を押して保存
#heroku configにてHeroku上に反映されているか確認する。
% heroku config
=== アプリ名 Config Vars
BASIC_AUTH_USER: 'USER'
BASIC_AUTH_PASSWORD: 'PASSWORD'
위의 방법으로 기본 인증을 설정할 수 있습니다.
Reference
이 문제에 관하여(Heroku에서 Rails/Basic 인증을 도입한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/morelife09/items/3a1bfb6a53eb58feae8d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)