LowCode (Mendix) Advanced/Design and Publish a REST API

Security

Caryou 2024. 10. 21. 14:06

학습 목표

이 모듈을 마치면 다음을 수행할 수 있습니다.

  • REST 서비스에 사용할 수 있는 다양한 인증 방법을 나열하세요.
  • 표준 인증 설정
  • 사용자 정의 인증을 선택하는 이유를 설명하세요.
  • 사용자 정의 인증 설정
  • 사용할 수 있는 일반적인 인증 유형을 식별하세요.

앱 개발의 모든 것과 마찬가지로 보안은 엄청나게 중요합니다. URL을 아는 사람에게 API에 대한 액세스 권한을 주고 싶지 않을 것입니다. 어느 날 아침 출근해서 누군가가 귀하의 API를 사용하여 특정 유형의 모든 객체를 삭제했다는 것을 알게 되었다고 상상해 보세요. 이러한 시나리오를 방지하려면 API를 적절하게 보호하는 것이 필수적입니다.

 

REST 서비스에 사용할 수 있는 다양한 인증 방법이 있습니다.

  1. Username and password (Username and password from account in the app).
  2. Active session (to allow access from JavaScript inside your current application).
  3. Custom

 

표준 인증

기본적으로 Username and password , Active session  새 애플리케이션에서 활성화됩니다.

 

서비스에 허용되는 역할을 선택해야 합니다. 서비스에만 액세스할 수 있고 다른 것은 액세스할 수 없는 별도의 사용자 역할을 만드는 것이 좋습니다. 이를 달성하려면 Check security를 비활성화해야 합니다 . 그렇지 않으면 애플리케이션에서 오류가 발생합니다.

[ 그림 1 ]

사용자 정의 인증

사용자 이름과 비밀번호 외에도 사용자 지정 인증을 사용하는 옵션도 있습니다. 사용자 지정 인증을 선택하는 이유는 다음과 같습니다.

  • 성능: 사용자 이름과 비밀번호는 기본 인증을 사용합니다. 기본 인증에서 사용자 이름과 비밀번호는 base64로 인코딩된 문자열로 전송됩니다. 수신 call이 많으면 base64 디코딩이 성능에 영향을 미칠 수 있습니다.
  • 추가 보안: 비밀번호는 종종 재사용되며 도난당하면 위험을 초래할 수 있습니다. 사용자 지정 인증을 사용하면 비밀번호가 필요 없게 됩니다.
  • 사용 편의성: 토큰은 사용자 이름과 비밀번호를 사용하는 것보다 구현하기가 더 쉬울 수 있습니다.

사용자 지정 인증이 작동하려면 System.User 개체를 반환하는 마이크로플로가 필요합니다. 다음 마이크로플로는 사용자를 인증하고 반환하는 방법을 보여줍니다.

[ 그림 2 ]

사용자 정의 인증 구현 예시

인증 데이터를 전달하는 방법은 두 가지가 있습니다.

  • as a Query
  • as a Header

요청에서 헤더로 인증 데이터를 보내는 것이 좋습니다. 쿼리 매개변수를 사용하면 서버 로그에 인증 데이터가 노출될 위험이 더 큽니다.

[ 그림 3 ]
[ 그림 4 ]

일반적인 인증 유형

Basic Auth

사용자 이름과 비밀번호를 선택하면 자동으로 구현됩니다.

Authorization: Basic <credentials>

자격 증명은 사용자 이름과 비밀번호를 콜론으로 base64로 인코딩한 것입니다.

 

Bearer Token (JWT)

마켓플레이스에서 JWT 토큰을 처리하기 위한 솔루션을 찾을 수 있습니다(플랫폼에서 지원되지 않음).

Authorization: Bearer <token>

 

API Key

API 키는 주체 없이 사용자나 애플리케이션을 식별하는 간단한 문자열입니다. 일반적으로 사용자에게 요청과 함께 헤더로 보내는 무작위 토큰을 제공합니다.

X-API-Key: abcdef123456

 

OAuth client grant

OAuth 2.0을 사용하면 먼저 API에 대한 액세스 토큰을 검색한 다음 해당 토큰을 사용하여 향후 요청을 인증합니다. OAuth 2.0 흐름을 통해 정보를 얻는 방법은 API 서비스 제공자마다 크게 다르지만 일반적으로 클라이언트 애플리케이션, 사용자 및 API 간에 몇 가지 요청을 주고받는 것이 포함됩니다.

OAuth 2.0 흐름은 일반적으로 다음과 같이 작동합니다.

  1. 클라이언트 애플리케이션은 사용자에게 자신의 데이터에 대한 액세스 권한을 부여해 달라고 요청합니다.
  2. 사용자가 액세스 권한을 부여하면 애플리케이션은 서비스 제공자에게 액세스 토큰을 요청하며, 사용자의 액세스 허가와 인증 세부 정보를 전달하여 클라이언트를 식별합니다.
  3. 서비스 제공자는 이러한 세부 정보를 검증하고 액세스 토큰을 반환합니다.
  4. 클라이언트는 액세스 토큰을 사용하여 서비스 제공자를 통해 사용자 데이터를 요청합니다.
Authorization: Bearer hY_9.B5f-4.1BfE

//where “hY_9.B5f-4.1BfE” is your OAuth Access Token

 

 

 

출처 : https://academy.mendix.com/link/paths/133/Design-and-Publish-a-REST-API

'LowCode (Mendix) Advanced > Design and Publish a REST API' 카테고리의 다른 글

Documentation  (0) 2024.10.21
Create Responses & Messages  (0) 2024.10.21
Methods  (1) 2024.10.21