SSO 로그온 UI 구성하기

로그온 UI는 사용자가 인증되어 있지 않는 상태로 로그온을 수행할 수 있도록 UI를 제공해야 합니다.

로그온 UI는 사용자의 자격증명(Credential)을 입력할 수 있도록 구성됩니다.

사용자 아이디와 비밀번호가 일반적입니다. 샘플로 제공하는 UI 구성은 다음과 같습니다.

파일명

설명

Logon.cshtml

일반적인 방식으로 사용자 아이디, 비밀번호를 입력할 수 있는 UI 샘플

LogonEnc.cshtml

Logon.cshtml과 전반적으로 동일하나 비밀번호 암호화 처리가 추가된 UI 샘플

LogonTFA.cshtml

2-Factor 인증 사시 1단계 인증 방식(사용자 자격증명 입력과 보안코드를 함께 입력)의 UI 샘플

[SSO/SSOController.cs] 의 샘플 코드

SSOController.cs
public ActionResult Logon()
{
	// SSO 인증 서버가 Logon 액션 메소드로 리다이렉트할 때 몇가지 정보를 HTTP POST로 전달해 준다.
	// 이 정보는 하기와 같다.
	// ssoSite : 이 정보는 SSO 인증 확인을 요청한 웹 응용 프로그램의 식별자이다.
	// returnURL : 이 정보는 SSO 인증을 완료한 후에 최종적으로 사용자에 제공할 웹 응용 프로그램의 URL이다.
	// policyVersion : 이 정보는 SSO 인증 서버가 사용하고 있는 인증 정책의 버전 번호이다. 만약에 이 웹 응용 프로그램이 
	// 사용하고 있는 인증 정책 버전과 policyVersion이 다를 경우에, 이 웹 응용 프로그램의 인증 정책을 초기화 해야 한다.
	// 또한 ssoSite와 returnURL은 이 웹 응용 프로그램과 관련되어 있지 않은 정보가 전달될 수 있다. 따라서 이 두가지 정보는
	// SSO 인증 서버로 부터 받은 정보를 그대로 다시 SSO 인증 서버로 전달해 주어야 한다. 비즈니스 요건에 따라서는 원하는 값으로
	// 변경하여 전송하는 것은 가능하지만, 가급적 전달된 정보를 변경하지 않고 그대로 사용할 것을 권장한다.
				
	// 이미 사용자가 SSO 인증을 받은 상태에서, 로그온 UI를 요청할 경우를 대비해서 SSO 인증 확인을 한다.
	AuthCheck authCheck = new AuthCheck(Request, Response);
	AuthStatus status = authCheck.CheckLogon();
	if (status == AuthStatus.SSOSuccess)
	{
		// 인증 상태 검사에서 성공했기 때문에, 이미 사용자는 인증을 완료한 상태이다. 더 이상 로그온 UI를 제공할 이유가 없기 때문에,
		// 비즈니스 요건에 맞는 URL로 사용자를 이동시킨다.
		// 이 샘플에서는 Home/Index로 이동시킨다.
		return RedirectToAction("Index", "Home");
	}
	else if (status == AuthStatus.SSOUnAvailable)
	{
		// 인증 상태 검사 결과가 SSO 인증 서버가 서비스를 제공할 수 없는 상태이다.
		// 이 경우에는 SSO 인증을 서비스 받을 수 없는 상황이기 때문에, 자체적으로 제공하는 로그온 UI를 제공하며, 
		// 사용자에게 웹 응용 프로그램에서 제공하는 서비스를 제공해 주어야 한다.
		// TODO 이곳에 자체 로그온 UI를 제공할 수 있는 코드를 추가한다.
	}


	LogonViewModel model = new LogonViewModel(authCheck.CurrentSSOProvider);
	model.SetPostInfo(authCheck, authCheck.CurrentSSOProvider);

	return View(model);
}

[Views/SSO/Logon.cshtml] 의 샘플 코드

Last updated

Was this helpful?