JWT 전달자 토큰으로 API를 보호하기 위한 OAuth 2.0 Express SDK 소개

8724 단어 jwtsecurityjavascript

Auth0에서 출시한 OAuth 2.0 Express SDK로 어떻게 Express #API를 더 쉽게 보호할 수 있는지 알아보세요.






Auth0은 JWT 베어러 토큰으로 API를 매우 쉽게 보호할 수 있는 새로운 express-oauth2-jwt-bearer SDK인 Express을 출시했습니다. 기능에 대한 개요를 살펴보겠습니다.

새로운 Express SDK가 필요한 이유는 무엇입니까?



Express API를 보호하기 위한 Auth0의 이전 조언은 express-jwt , express-jwt-authzjwks-rsa 의 세 가지 SDK의 조합이었습니다. 이러한 기능은 잘 작동하고 널리 사용되는 SDK이지만 개발자 경험이 개선될 수 있다고 느꼈습니다.

먼저 종속성 수를 3개에서 1개로 줄여 Express API를 보호하는 프로세스를 단순화하고 싶었습니다. 이것은 또한 설치 크기를 ~2MB에서 ~500KB로 줄입니다. 다음 스크린샷과 같이 새 SDK를 구현하기 전과 후의 QuickStart을 비교하여 이점을 확인할 수 있습니다.



또한 토큰 형식, 알고리즘 및 산업 약어( jwt , jwks , rsaauthz )를 나타내는 라이브러리 모음이 아닌 OAuth2.0과 같은 인증 표준으로 API를 보호하는 방법을 개발자 커뮤니티에 가르치고 싶었습니다.

이것이 프로젝트의 첫 번째 화신인 express-oauth2-bearer 이 우수한 Identity Labs 시리즈를 지원하기 위해 실험적으로 출시된 이유입니다( express-oauth2-bearer 은 이제 express-oauth2-jwt-bearer 을 위해 더 이상 사용되지 않음).

표준의 역할



express-oauth2-jwt-bearer 은 잘 정립된 OAuth2 Bearer Token Usage specJSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens 의 새로운 사양의 조합을 사용하여 Express API를 보호합니다.

개발자가 무기명 토큰 사용 사양을 사용하여 요청에서 액세스 토큰을 획득할 수 있는 명확한 경로가 항상 있었지만 개발자는 진위를 확인하는 방법을 결정할 때 모범 사례와 업계 관례에 의존했습니다.

JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens spec 을 통해 새로운 표준을 활용하여 상호 운용 가능한 방식으로 액세스 토큰 JWT를 사용할 수 있습니다. express-oauth2-jwt-bearer은 OAuth 2.0 액세스 토큰 사양에 대한 JWT 프로필을 부분적으로 구현합니다. strict 옵션을 활성화하면 전체 사양을 구현합니다. 또한 광범위한 ID 제공자에서 사용할 수 있도록 세부적으로 사용자 정의할 수 있습니다.

JWT 전달자 토큰으로 Express API 보호



express-oauth2-jwt-bearerOpenID Connect Discovery과 유사한 메커니즘을 사용하여 자체 구성하므로 최소한의 노력으로 쉽게 설정할 수 있습니다. 몇 줄의 코드만으로 API에 쉽게 추가하여 예를 들어 Auth0에서 발급한 액세스 토큰으로 보호할 수 있습니다.

Auth0으로 Express API를 쉽게 보호하려면 다음 예와 같이 npm 또는 yarn을 사용하여 SDK를 설치하는 것부터 시작하십시오.

npm install express-oauth2-jwt-bearer


코드 또는 환경 변수를 통해 SDK를 초기화할 수 있습니다. 후자의 경우 최소 .env 파일은 다음과 같습니다.

ISSUER_BASE_URL=https://<YOUR_TENANT>.auth0.com
AUDIENCE=<YOUR_API_IDENTIFIER>

<YOUR_TENANT><YOUR_API_IDENTIFIER>Auth0 Dashboard 에 있는 Auth0 테넌트 이름 및 API 식별자 값으로 바꿉니다.

그런 다음 express-oauth2-jwt-bearer 미들웨어를 다음과 같이 API에 추가합니다.

const express = require('express');
const { auth } = require('express-oauth2-jwt-bearer');
require('dotenv').config(); // Load the .env variables

const app = express();
app.use(auth());

app.get('/api/private', (req, res) => {
  res.json({ message: `Hello ${res.auth.payload.sub}!` });
});

app.listen(3000, () => console.log('listening at http://localhost:3000'))


그런 다음 API를 시작하고 curl을 사용하여 테스트할 수 있습니다.

curl http://localhost:3000/api/private \
--header 'Authorization: Bearer ${YOUR_JWT_ACCESS_TOKEN}'


액세스 토큰을 어디에서 얻을 수 있는지 궁금하다면 다음 그림과 같이 API configuration in the Auth0 Dashboard 의 테스트 탭에서 테스트 목적으로 얻을 수 있습니다.



express-openid-connect 을 확인하여 programmatically obtain an Access Token to call external APIs 방법의 예를 확인하십시오.

Read more...

좋은 웹페이지 즐겨찾기