Python/Django를 통한 OAuth/OIDC 서버
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을 취득했습니다.
$ pip install authlete
$ pip install authlete-django
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을 취득했습니다.
$ git clone https://github.com/authlete/django-resource-server.git
$ cd django-resource-server
$ vi authlete.ini
$ 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()
$ python manage.py runserver 8001
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을 취득했습니다.
이 외에도 CIBA, Device Flow ( RFC 8628 ), JARM 등 세계 최첨단 사양도 구현되었습니다.
꼭 Authlete 의 이용을 검토해 주세요! 문의 양식
Reference
이 문제에 관하여(Python/Django를 통한 OAuth/OIDC 서버), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/TakahikoKawasaki/items/03f2fb68e00c89bbd3ae텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)