Python/Django를 통한 OAuth/OIDC 서버

Python용 웹 프레임워크인 장고(장고)에서 OAuth 2.0 및 OpenID Connect 호환 인증 서버/OpenID 공급자를 만드는 것도 Authlete(오슬리트)를 백엔드로 사용하면 쉽습니다.

1. 준비



1.1. 라이브러리 설치


$ pip install authlete
$ pip install authlete-django


도서관
GitHub
PyPI


authlete
authlete-python
authlete

authlete-django
authlete-python-django
authlete-django


1.2. Authlete 계정



Authlete에 계정 등록을 사용하여 사전에 서비스 API 키, 서비스 API 비밀 및 클라이언트 ID를 확보하십시오. 자세한 절차는 여기.

2. 권한 서버



2.1. 샘플 구현 다운로드


$ git clone https://github.com/authlete/django-oauth-server.git
$ cd django-oauth-server

2.2. 설정


$ vi authlete.ini

※ Authlete에서 취득한 서비스 API 키와 서비스 API 비밀을 설정합니다.

2.3. 테스트용 계정 생성


 $ python manage.py migrate
 $ python manage.py shell
 >>> from django.contrib.auth.models import User
 >>> user = User()
 >>> user.username = 'john'
 >>> user.first_name = 'John'
 >>> user.last_name = 'Smith'
 >>> user.email = '[email protected]'
 >>> user.set_password('john')
 >>> user.is_active = True
 >>> user.save()
 >>> quit()

※ Django 에 표준으로 들어 있는 django.contrib.auth 를 이용하고 있습니다.

2.4. 시작


$ python manage.py runserver 8000

3. 리소스 서버



3.1. 샘플 구현 다운로드


$ git clone https://github.com/authlete/django-resource-server.git
$ cd django-resource-server

3.2. 설정


$ vi authlete.ini

※ Authlete에서 취득한 서비스 API 키와 서비스 API 비밀을 설정합니다.

3.3. 테스트용 계정 생성


 $ python manage.py migrate
 $ python manage.py shell
 >>> from django.contrib.auth.models import User
 >>> user = User()
 >>> user.username = 'john'
 >>> user.first_name = 'John'
 >>> user.last_name = 'Smith'
 >>> user.email = '[email protected]'
 >>> user.set_password('john')
 >>> user.is_active = True
 >>> user.save()
 >>> quit()

※ Django 에 표준으로 들어 있는 django.contrib.auth 를 이용하고 있습니다.

3.4. 시작


$ python manage.py runserver 8001

※ 인가 서버의 포트 번호와 부딪히지 않도록 8001을 지정하고 있습니다.

4. 동작 확인



4.1. 액세스 토큰 발행



웹 브라우저를 시작하고 주소 표시줄에 다음 URL(허가 요청)을 입력합니다. '{클라이언트 ID}'의 위치는 적절하게 교체하십시오.
http://localhost:8000/api/authorization?client_id={クライアントID}&response_type=token

인증 페이지가 표시되므로 로그인 ID 입력란과 암호 입력란에 모두 john를 입력하고 Authorize 버튼을 누릅니다. ('테스트 계정 생성' 단계에서 계정이 생성되었다고 가정합니다.)

다음과 같은 화면이 표시되면 성공입니다. access_token 오른쪽에 있는 값이 발급된 액세스 토큰입니다.






4.2. API 호출



발급된 액세스 토큰을 사용하여 리소스 서버에 API 호출을 수행합니다. '{발행된 액세스 토큰}'의 위치는 적절하게 대체하십시오.
$ ACCESS_TOKEN={発行されたアクセストークン}
$ curl -v http://localhost:8001/api/time \
       -H "Authorization: Bearer ${ACCESS_TOKEN}"

다음과 같은 출력을 얻으면 성공입니다.
{
  "year":   2019,
  "month":  8,
  "day":    9,
  "hour":   14,
  "minute": 45,
  "second": 2
}

결론



OAuth 2.0 과 OpenID Connect 의 어려운 처리는 모두 ,Authlete 의 서버측에서 처리됩니다. 따라서 Authlete를 백엔드로 사용하면 프런트 엔드 인증 서버와 리소스 서버를 쉽게 구현할 수 있습니다. 따라서 프런트 서버 개발자는 사용자 관리 및 로그인 처리와 같은 OAuth 2.0 및 OpenID Connect 이외의 부분을 개발하는 데 더 많은 리소스를 할당할 수 있습니다.

Authlete는 다음 OpenID Certification을 취득했습니다.
  • Basic OP
  • Implicit OP
  • Hybrid OP
  • Config OP
  • Dynamic OP
  • Form Post OP
  • FAPI R/W OP w/MTLS
  • FAPI R/W OP w/Private Key

  • 이 외에도 CIBA, Device Flow ( RFC 8628 ), JARM 등 세계 최첨단 사양도 구현되었습니다.

    꼭 Authlete 의 이용을 검토해 주세요! 문의 양식

    좋은 웹페이지 즐겨찾기