OAuth Proxy

OAuth 요청을 프록시할 수 있는 프록시 플러그인입니다. 리디렉션 URL을 미리 알 수 없어서 OAuth 제공자에 추가할 수 없는 개발 및 미리보기 배포에 유용합니다.

설치

auth 설정에 플러그인 추가

auth.ts
import { betterAuth } from "better-auth"
import { oAuthProxy } from "better-auth/plugins"

export const auth = betterAuth({
    plugins: [ 
        oAuthProxy({ 
            productionURL: "https://my-main-app.com", // 선택사항 - URL이 올바르게 추론되지 않는 경우
            currentURL: "http://localhost:3000", // 선택사항 - URL이 올바르게 추론되지 않는 경우
        }), 
    ] 
})

OAuth 제공자에 리디렉션 URL 추가

프록시 서버가 제대로 작동하려면 소셜 제공자 구성에서 OAuth 제공자에 등록된 메인 프로덕션 앱의 리디렉션 URL을 전달해야 합니다. 이는 프록시 요청을 하려는 각 소셜 제공자에 대해 수행해야 합니다.

export const auth = betterAuth({
   plugins: [
       oAuthProxy(),
   ],
   socialProviders: {
        github: {
            clientId: "your-client-id",
            clientSecret: "your-client-secret",
            redirectURI: "https://my-main-app.com/api/auth/callback/github"
        }
   }
})

작동 방식

플러그인은 OAuth 요청을 프록시하는 엔드포인트를 서버에 추가합니다. 소셜 로그인을 시작하면 리디렉션 URL을 이 프록시 엔드포인트로 설정합니다. OAuth 제공자가 서버로 다시 리디렉션한 후 플러그인은 사용자를 원래 콜백 URL로 전달합니다.

await authClient.signIn.social({
    provider: "github",
    callbackURL: "/dashboard" // 플러그인이 이를 "http://localhost:3000/api/auth/oauth-proxy?callbackURL=/dashboard"와 같이 재정의합니다
})

OAuth 제공자가 사용자를 서버로 반환하면 플러그인은 자동으로 의도한 콜백 URL로 리디렉션합니다.

프록시 서버와 메인 서버 간에 쿠키를 공유하기 위해 URL 쿼리 매개변수를 사용하여 URL에 암호화된 쿠키를 전달합니다. 쿠키가 암호화되어 서버에서만 복호화할 수 있으므로 안전합니다.

이 플러그인은 상태 쿠키 확인을 건너뛰어야 합니다. 이는 보안에 영향을 미치므로 개발 또는 스테이징 환경에서만 사용해야 합니다. baseURLproductionURL이 동일하면 플러그인은 요청을 프록시하지 않습니다.

옵션

currentURL: 애플리케이션의 현재 URL은 플러그인에 의해 자동으로 결정됩니다. 먼저 클라이언트가 호출한 경우 요청 URL을 확인한 다음 인기 있는 호스팅 제공자의 기본 URL을 확인하고 마지막으로 auth 구성의 baseURL로 대체됩니다. URL이 올바르게 추론되지 않으면 여기에서 수동으로 지정할 수 있습니다.

productionURL: 이 값이 auth 구성의 baseURL과 일치하면 요청이 프록시되지 않습니다. 기본값은 BETTER_AUTH_URL 환경 변수입니다.

On this page