🚀 개요
Multi Agent 기반 서비스에서 사용자 인증(Authentication)과 권한 부여(Authorization)는 필수적인 요소입니다.
특히, 외부 API를 호출하거나, 개인 데이터를 보호해야 하는 서비스에서는 OAuth2.0, JWT, RBAC 같은 개념이 중요합니다.
이 글에서는 Auth0를 활용한 인증·인가 시스템을 쉽게 이해할 수 있도록, 주식 투자 자동화 예제를 통해 설명합니다.
주가 조회, RAG 기반 데이터 검색, 비동기 승인 시스템을 구현하며 GenAI와 Auth0가 어떻게 활용되는지 알아보겠습니다.
auth0 에서는 주식에 대한 6가지 샘플을 제공하고 이중 2가지 예제로 인증·인가 시스템을 어떻게
이해하고 있는지 알아보겠습니다.
1️⃣ API를 사용자 대신 호출하기 (Call APIs on users’ behalf)
🚀 시나리오: "What's the stock price of ZEKO?"
사용자가 "ZEKO의 주식가격을 보여줘"라고 요청했을 때, 일반적인 API 호출을 넘어, .사용자의 Google Calendar에도 접근하여 일정을 추가할 수 있도록 도와줍니다.
- 주식 가격 조회 → Yahoo Finance API, Google Finance API 등을 호출하여 ZEKO 주식 가격을 가져옴.
- 추가 기능 → 사용자의 투자 서비스(Google Sheets, Robinhood 등)와 연동할지 여부를 물어봄.
- OAuth 2.0을 통한 인증 → 사용자가 Google Sheets에 데이터를 저장하려면, Auth0를 통해 인증을 진행.
📌 실제 동작 방식
1️⃣ 사용자가 "ZEKO의 주식 가격을 조회" 요청
2️⃣ Market0(애플리케이션)이 ZEKO 주식 가격을 검색 (Yahoo Finance API 등 활용)
3️⃣ 사용자의 투자 서비스 연동 제안 (Google Sheets, Robinhood 등과 연동 여부 확인)
4️⃣ Auth0를 통한 OAuth 인증 및 권한 부여 - 사용자가 추가 기능을 원할 경우, Auth0가 OAuth 인증 처리 후 Access Token 발급.
5️⃣ Access Token을 활용하여 API 호출 및 데이터 저장 - Google Sheets API를 호출하여 주식 가격 자동 기록. - Robinhood API를 호출하여 자동 매매 실행 가능.
💰 (중요) Auth0의 역할
✔ 주식 가격 조회 → 인증 없이 API 호출 가능.
✔ 사용자가 Google Sheets 또는 Robinhood에 저장 요청 → Auth0 OAuth 인증 필요.
✔ Access Token 관리 → Google API 또는 Robinhood API에 접근 가능하도록 토큰 발급.
2️⃣ RAG 시스템에서의 인증과 인가 (Authorization for RAG)
🚀 시나리오: "ZEKO의 실적 보고서를 보여줘"
사용자가 ZEKO 주식의 실적 보고서(earnings)를 요청하면, 사용자의 접근 권한(Role)에 따라 제공할 수 있는 정보를 제한하는 방식.
📊 기능 개요
- RAG 기반 검색 → 벡터 스토어(Vector Store)에서 관련 정보를 검색.
- 역할(Role)에 따른 데이터 접근 제한 → 일반 사용자는 공개 데이터만 조회 가능, 프리미엄 사용자는 애널리스트 보고서 접근 가능.
- Fine-Grained Authorization(FGA) 적용 → Okta FGA를 통해 사용자의 접근 권한을 확인.
📌 실제 동작 방식
1️⃣ 사용자가 "ZEKO의 실적 보고서" 요청
2️⃣ Market0가 벡터 데이터베이스에서 관련 문서 검색
3️⃣ 사용자의 역할(Role)에 따라 문서 접근 제한 (Okta FGA 활용)
4️⃣ Market0가 사용자 맞춤형 응답 생성 - 일반 사용자 → 공개 데이터 기반 응답. - 프리미엄 사용자 → 애널리스트 보고서 포함 응답.
📌 핵심 개념
✔ RAG 기반 정보 제공 → LLM이 검색한 문서를 기반으로 주식 전망 생성.
✔ Fine-Grained Authorization(FGA) 적용 → 역할(Role)에 따라 검색 가능한 데이터를 제한.
✔ 데이터 유출 방지 → 권한이 없는 데이터는 검색 결과에서 제외.
💰 Auth0의 역할(중요)
✔ JWT 기반 사용자 인증 → 사용자의 역할(Role) 포함.
✔ Role-Based Access Control(RBAC) 적용 → 사용자의 권한에 따라 데이터 접근 제한.
✔ 보안 강화 → 비공개 데이터를 보호하고, 접근 가능한 사용자만 열람 허용.
3️⃣ 비동기 사용자 승인 (Async User Confirmation)
🚀 시나리오: "P/E 비율이 15 이상이면 ZEKO 주식을 구매해줘"
사용자가 특정 조건을 설정하면, 시스템이 이를 지속적으로 모니터링하다가 조건이 충족되면 사용자에게 승인 요청을 보낸 후 거래를 실행하는 방식.
📊 기능 개요
- 비동기적(Async) 트리거 → 시스템이 자동으로 주가 데이터를 모니터링.
- 사람의 개입(Human in the Loop) → 조건 충족 시 사용자의 승인을 요청한 후 거래 실행.
- CIBA(Client-Initiated Backchannel Authentication) 사용 → Auth0를 활용하여 사용자 승인 요청을 비동기적으로 처리.
📌 실제 동작 방식
1️⃣ 사용자가 "P/E 비율이 15 이상이면 ZEKO 주식을 매수" 요청
2️⃣ 시스템이 주가 데이터를 실시간 모니터링
3️⃣ 조건 충족 시 Auth0 CIBA를 통해 사용자 승인 요청 (푸시 알림, 이메일, SMS 전송 가능)
4️⃣ 사용자가 승인 여부 확인 및 거래 승인
5️⃣ Market0가 증권 API(Robinhood, Alpaca 등) 호출하여 주식 매수 실행
6️⃣ 사용자에게 거래 완료 알림 전송
💰 Auth0의 역할
✔ JWT 기반 사용자 인증 → 사용자의 요청을 확인.
✔ CIBA 기반 비동기 승인 요청 → 사용자 승인 후 거래 실행.
✔ 보안 강화 → 자동 거래가 임의로 실행되지 않도록 사용자의 최종 승인 필요.
📌 결론
✅ AI 서비스에서 API 호출 시, 사용자 인증·인가(Auth0)가 필수적
✅ RAG 시스템에서 역할(Role)에 따른 데이터 접근 제한 필요
✅ 비동기 사용지 승인(Async User Confirmation)도 케이스에 따라 필요 할수 있음.
📢 AI를 활용한 서비스는 점점 더 복잡해지고 있으며, 보안과 사용자 데이터 보호는 필수적인 요소가 되고 있습니다.
Auth0 for genAI를 통해서
1. oAuth를 활용해서 OAuth 2.0 기반 인증과 인가 적용
2. RAG 기반 검색 시스템에서 역할(Role)을 기반으로 데이터 접근
3. 비동기 인증을 통해 중요한 트랜잭션을 보호할 수 있는 구조
위 3가지의 패러다임이 중요하고 앞으로 AI Agent를 통해서 인증인가를 구현하는 개발자들은
이런 서비스를 쓰던가 구현하던가 해야할거 같다.
'AI' 카테고리의 다른 글
LangGraph 기반 AI 채팅의 상태 관리: Branching과 Custom Reducer의 역할 (0) | 2025.03.02 |
---|---|
LangGraph에서 Router, Agent, ReAct, State, 그리고 Memory 이해하기 (0) | 2025.03.01 |
LangChain에서 LLM을 더 강력하게 만드는 방법: Control Flow와 Agent 개념 정리 (0) | 2025.03.01 |