2단계 인증(2FA 또는 TFA) 구현
목적과 이점
2FA는 사기 행위로부터 사용자를 보호하는 추가 보안 메커니즘입니다. 지금까지 Bahmni는 OpenMRS의 기본 인증(사용자 이름과 암호)을 사용했습니다. 사기 행위로부터 사용자를 보호하려면 추가 보안 메커니즘을 두는 것이 좋으므로 Bahmni에 2FA를 도입합니다. 구현 환경에서 선택적으로 사용할 수 있습니다. 활성화하면 먼저 사용자 이름과 암호로 인증하고 성공 시 등록된 휴대전화로 OTP가 포함된 SMS를 받습니다. 시스템을 사용하려면 OTP 인증도 완료해야 합니다.
생성된 OTP는 Java의 SecureRandom을 사용합니다(구현 상세는 관련 문서 참조). OTP와 생성, 검증, 만료 같은 모든 작업은 메모리에서만 처리하며 데이터베이스는 사용하지 않습니다.
단계
1. 2FA 활성화/비활성화
2FA를 활성화하거나 비활성화하려면 Bahmni 설치 전에 /etc/bahmni-installer/setup.yml 파일에 다음 코드 조각을 추가합니다.
2. SMS 게이트웨이 서비스 추가
Bahmni에서는 구현 담당자가 SMS 게이트웨이 서비스를 유연하게 추가할 수 있습니다.
3. 사용자 휴대전화 번호 추가
OpenMRS 데이터베이스에 사용자의 휴대전화 번호를 추가합니다.
OpenMRS 데이터베이스의 contact 테이블에는 세 개의 열이 있습니다.
- user_name은 OpenMRS의 사용자 이름과 정확히 같아야 합니다. country_code는 관련 목록에서 확인할 수 있으며 앞에 "+"를 붙이지 않아야 합니다. mobile_number는 해당 사용자의 휴대전화 번호입니다. Reports 모듈을 설치했다면 reports-user에 'bypass2fa' 역할을 추가해야 합니다.
Sample SQL code
insert into contact(user_name, country_code, mobile_number) values('Leo','91','9955273623');4. 감사 로그 확인
모든 이벤트가 감사 로그에 수집됩니다. 로그 파일은 매일 생성되며 최근 90일의 파일만 보관됩니다.
샘플 로그 항목:
- doctor1에게 OTP 623704 생성. doctor1이 OTP 123131을 사용한 실패 시도 #1. doctor1의 OTP 623704 검증 성공.
5. OTP 구성 재정의
application.properties 파일에 구성을 추가하여 다음 설정을 재정의할 수 있습니다.
| Property | Description | Default Value |
|---|---|---|
| OTP_LENGTH | Number of digits in the generated OTP | 6 |
| OTP_EXPIRES_AFTER | Number of minutes the OTP should be valid after it is generated | 15 |
| OTP_MAX_ATTEMPTS | Number of times the user is allowed to enter a wrong OTP, before the user is redirected to the login screen | 3 |
| OTP_MAX_RESEND_ATTEMPTS | Number of times the user can request a new OTP by clicking on resend button, before the user is redirected to the login screen | 3 |
원문 정보
원문 보기 ↗Bahmni Wiki · CC BY-SA 4.0