27 lines
892 B
TypeScript
27 lines
892 B
TypeScript
/**
|
|
* Synology SSO 로그인 시작
|
|
* GET /api/auth/synology
|
|
*
|
|
* Synology SSO Server OAuth 2.0 인증 페이지로 리다이렉트
|
|
*/
|
|
export default defineEventHandler(async (event) => {
|
|
const config = useRuntimeConfig()
|
|
|
|
if (!config.synologyServerUrl || !config.synologyClientId) {
|
|
throw createError({
|
|
statusCode: 500,
|
|
message: 'Synology SSO가 설정되지 않았습니다.'
|
|
})
|
|
}
|
|
|
|
// Synology SSO Server OAuth 인증 URL
|
|
const authUrl = new URL(`${config.synologyServerUrl}/webman/sso/SSOOauth.cgi`)
|
|
authUrl.searchParams.set('response_type', 'code')
|
|
authUrl.searchParams.set('client_id', config.synologyClientId)
|
|
authUrl.searchParams.set('redirect_uri', config.synologyRedirectUri)
|
|
authUrl.searchParams.set('scope', 'user_id')
|
|
authUrl.searchParams.set('state', crypto.randomUUID())
|
|
|
|
return sendRedirect(event, authUrl.toString())
|
|
})
|