'use client'
/**
*
* SAML 2.0 기반 SSO 로그인 요청을 시작하는 버튼 컴포넌트
*
*
*/
import { useState } from 'react'
import { Button } from '@/components/ui/button'
import { toast } from '@/hooks/use-toast'
import { Loader2, Shield } from 'lucide-react'
import React from 'react'
interface SAMLLoginButtonProps {
className?: string
children?: React.ReactNode
variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link' | 'samsung'
size?: 'default' | 'sm' | 'lg' | 'icon'
}
export function SAMLLoginButton({
className,
children = "Knox SSO로 로그인하기",
variant = "outline",
size = "default"
}: SAMLLoginButtonProps) {
const [isLoading, setIsLoading] = useState(false)
const handleSAMLLogin = async () => {
try {
setIsLoading(true)
// API 엔드포인트를 통해 SAML AuthnRequest URL 생성
const response = await fetch('/api/auth/saml/authn-request', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
})
if (!response.ok) {
throw new Error('Failed to create SAML AuthnRequest')
}
const data = await response.json()
if (!data.success || !data.loginUrl) {
throw new Error(data.error || 'Failed to get SAML login URL')
}
console.log('SAML Login URL:', data.loginUrl)
// IdP로 리다이렉트
window.location.href = data.loginUrl
} catch (error) {
console.error('SAML Login Error:', error)
toast({
title: '로그인 오류',
description: 'SAML 로그인을 시작할 수 없습니다.',
variant: 'destructive',
})
setIsLoading(false)
}
}
return (
)
}
// 간단한 Knox SSO 버튼 (props 없이)
export function KnoxSSOButton() {
return (
Knox SSO (STAGE 단계)
)
}