Windows/Etc

[ETC] SSO

ceokim 2022. 12. 4. 12:10

SSO(Single Sign On)

하나의 로그인정보(ID, PW)를 이용해 여러 애플리케이션이나 사이트에 접근할 수 있는사용자인증서비스

 

Authentication(인증)

계정과 암호를 통한 로그인(누구인지 확인을 하는 과정)


Authorization(허가)

권한을 부여하는 것
 - Right(권한)

주체에 지정되는 보안 수준. 사람/ 프로세스/ 시스템이 객체에 접근할 수 있는 권리
 - Permission

객체에 지정되는 보안 수준. 파일/ 프로세스/ 시스템이 접근을 허용하는 수준.


SSO프로세스

인증대행방식(Delegation)과 인증정보전달방식(Propagation)이 있고
서비스의 특성에 따라 두가지 방식을 혼용해서 구성하기도 한다.

인증대행방식(Delegation)
인증서버가 로그인한 사용자의 ID,PW를 저장하고 있다가
사용자가 해당 어플리케이션에 접속할 때 정보를 가져와 접속해주는 방식

 

인증정보전달방식(Propagation)
사용자가 로그인하면 서버는 각 어플리케이션에 인증이 가능한 토큰을 사용자에게 전달하고
사용자는 각 어플리케이션에 접속할 때 토큰을 전달하여 로그인하는 방식

* Web기반에서의 SSO분류방식(인증정보전달방식을 세분화한 방법)

One Cookie Domain SSO
SSO의 대상서비스 및 어플리케이션이 모두 하나의 도메인안에 존재할 때 사용.(ex. 기업의 내부)
로그인한 사용자는 토큰을 받게되고 토큰은 도메인내에 쿠키로 존재한다. 사용자가 어떤 서비스에 접근할 때 도메인내에 등록된 쿠키를 사용하여 인증을 해준다.

Multi Cookie Domain SSO
SSO의 대상서비스 및 어플리케이션이 여러 도메인에 나뉘어 존재할 때 사용.
각 도메인의 신뢰를 받은 마스터 에이전트를 구성해 사용자와 각 도메인들을 연결해주는 방식으로
마스터 에이전트가 각 도메인의 인증 및 토큰발행을 대신한다.

One Token for All Multi Cookie Domain SSO
여러개의 도메인에서 한개의 토큰을 이용해서 인증하는 방식.
로그인한 사용자는 마스터 에이전트에게 받은 한개의 토큰을 통해서 각 도메인내의 모든 서비스들을 이용할 수 있다. 

*SSO토큰 : 사용자 이름 또는 전자 메일 주소와 같은 사용자 식별 정보를 포함하는 디지털 파일이다. 사용자가 애플리케이션에 대한 액세스를 요청하면 애플리케이션은 SSO토큰을 SSO서비스와 교환하여 사용자를 인증한다. 


SSO구현방식

SAML, OAuth, OIDC

 

SAML(Security Assertion Markup Language)
인증정보제공자(idp)와 서비스제공자(sp)간의 인증 및 인가데이터를 교환하기 위한 xml기반의 표준데이터포맷.
Authorization과 Authentication 둘 다 다룸.
인증정보를 xml포맷으로 생성하고 이 xml데이터를 암호화해서 최종 수신자에게 전달.
이 때 생성한 xml을 Assertion이라고 한다.
xml형식이라 브라우저에서만 동작이 가능하며 모바일이나 native application에서는 부적절한 형식.

사용자의 로그인시도 → IDP에서 유저인증진행
→ 사용자가 어떠한 서비스를 이용하려고 할 때 IDP는 해당 SP에게 사용자인증정보를 전달 → 사용자의 서비스 사용
ex. google에 로그인 후 구글드라이브나 gmail 등 구글의 서비스를 이용한 경우
     (로그인 후 자격증명을 다시 입력하지 않고 추가 서비스에 액세스)

* native application : 특정 플랫폼이나 디바이스에서 사용가능한 소프트웨어
   ex) ios, 안드로이드(모바일운영체제에서 구동가능)
* IDP : ID제공자
* SP : 서비스제공자

https://haneepark.github.io/2018/08/04/sso/

 

SSO란 무엇인가! 이해해봅시다

서론 안녕하세요. 이번 포스팅에서는 Web에서의 인증 방식의 하나인 SSO(Single Sign On)가 무엇인지, 어떤 불편함을 해소 하기 위한 기술인지 설명드리려고 합니다. 세세하고 딱딱한 기술적인 사항을

haneepark.github.io

 

OAuth 2.0(Open Authorization 2.0)
Authorization을 위한 개방형 표준 프로토콜.
애플리케이션 또는 파일에 대한 권한부여를 제어하는 프레임워크.

사용자의 동의를 받고 써드파티앱과 중요한 정보(계정)를 공유하지 않고도 자원에 접근할 수 있게 해줌.
Jason기반이며 모바일환경에서의 SAML의 단점을 보완하기 위해 개발됨.

사용자 인증요청 → Authorization코드발급 → Access Token발급/ 저장 → 인증완료
ex. 새 애플리케이션에 가입하고 facebook 또는 휴대폰연락처를 통해 새 연락처를 자동으로 제공하도록 동의하는 경우.

* Authorization코드 : 해당 Client가 Resource Owner에게 사용허락을 인가받았다는 증서
* Access Token : Resource를 사용할 수 있게 해주는 토큰, 사용자에 대한 정보는 없고 특정 권한에 대한 허가만 존재.
* Refresh Token : 보안을 위해 유효시간이 짧은 Access Token을 위해 간단히 Access Token을 발급받을 수 있게 해주는 토큰

https://showerbugs.github.io/2017-11-16/OAuth-%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C

 

OAuth 란 무엇일까 · Showerbugs

OAuth 란 무엇일까 정리중 아래와 같은 로그인 창을 보셨을 것입니다. 별도의 회원가입 없이 로그인을 제공하는 플랫폼의 아이디만 있으면 서비스를 이용 할 수 있습니다. 외부 서비스에서도 인

showerbugs.github.io

(SAML, OAuth설명)참고사이트

https://www.okta.com/kr/identity-101/saml-vs-oauth/#:~:text=%EB%91%90%20%EA%B0%80%EC%A7%80%20%EB%AA%A8%EB%91%90%20%EC%9B%B9%20SSO,%EC%97%B0%EB%8F%99%20%EB%B0%A9%EC%8B%9D%EC%9D%84%20%EC%82%B4%ED%8E%B4%EB%B3%B4%EA%B2%A0%EC%8A%B5%EB%8B%88%EB%8B%A4.

 

SAML과 OAuth의 특징 및 차이점 | Okta Identity Korea

SAML 및 OAuth 두 가지 모두 웹 SSO에 사용되지만, SAML이 사용자를 위한 프로세스인 반면, OAuth는 애플리케이션을 위한 프로세스라고 할 수 있습니다. 보다 자세한 두 가지 프로세스의 상호 연동 방식

www.okta.com

 

OIDC(OpenID Connect)
OAuth2.0을 이용하여 만들어진 인증레이어(Authentication을 위한 기술).
OAuth에 JWT형식의 ID Token을 추가 인증.

IDP에 로그인할 수 있도록 지원하는 표준 인증 프로토콜로 소비자 웹사이트 및 모바일 앱에서 사용자로그인에 사용됨.
OIDC(허가)는 SAML(인증) 또는 OAUTH(인증)와 함께 사용한기도 한다.

사용자 인증요청 → Authorization코드발급 → Access Token발급/ 저장,  ID Token발급 → 인증완료
ex. google계정을 사용하여 유투브나 facebook에 로그인하는 경우.

*ID Token : 사용자정보, 인증자, 발행자정보 포함. 

https://www.samsungsds.com/kr/insights/oidc.html

 

편의성을 높인 ID 인증 관리 - OIDC[OpenID Connect]가 주목 받는 이유

편의성을 높인 ID 인증 관리 - OIDC[OpenID Connect]가 주목 받는 이유

www.samsungsds.com

https://hudi.blog/open-id/

 

OpenID(OIDC) 개념과 동작원리

등장배경 이전에는 사용자 데이터를 서비스에서 직접 관리하는 경우가 대다수였다. 하지만 해킹, 피싱등으로 인한 개인정보 유출 사건이 끊임없이 발생하자, 서비스에서 직접 사용자 데이터를

hudi.blog


SSO보안기술

Data Confidentiality(데이터 기밀유지)
토큰은 주요 암호 알고리즘(AES, SEED)과 128bit이상의 키로 암호화되어야 한다.

 

Data Integrity(데이터 무결성)
토큰은 MAC 등을 포함해 데이터의 무결성을 보장해야 한다.

 

Replay Attack Protection(재전송 공격 방어)
항상 사용자와 대상 애플리케이션 사이에 암호 채널을 형성해야 하며 이 채널을 통해 토큰을 전달해야 한다.
그러나 SSL과 같은 채널 암호를 사용하는 데에는 매우 많은 비용이 요구되어 실제로 많이 사용되고 있지는 않다.

SSL과 같은 암호채널을 사용하지 않으면서 Replay Attack이 발생할 수 있는 상황을 줄일 수 있도록
다음과 같은 보안기술들이 사용된다.


*사용자 주소 제한
토큰이 발행될 때 접속한 사용자의 주소를 토큰 내부나 토큰서버에 기억시켜 실제 사용한 사용자주소와 최초 토큰을 요청한 사용자의 주소를 비교하여 인증을 제한하는 방법


*유효시간 제한
토큰의 유효시간을 매우 짧게 줌으로써 공격자가 토큰을 중간에 가로채더라도 토큰을 사용할 수 없게 만드는 방법이다.
정확한 사용자에게는 자동으로 토큰을 업데이트시켜 사용에 큰 지장이 없게 해야한다.


SSO솔루션 종류

  • 듀오/시스코 SSO(Duo/Cisco SSO)
  • 아이댑티브 SSO(Idaptive Single Sign-On)
  • 매니지엔진/조호 아이덴티티 매니저 플러스(ManageEngine/Zoho Identity Manager Plus)
  • 마이크로포커스/넷IQ 액세스 매니저(MicroFocus/NetIQ Access Manager)
  • 옥타 SSO(Okta Single Sign-On)오픈로그인 SSO(OneLogin Single Sign-On)
  • 퍼펙트클라우드 스마트사인인(PerfectCloud SmartSignIn)
  • 핑 아이덴티티 핑원(Ping Identity PingOne)
  • RSA 시큐어ID 액세스 스위트(RSA SecurID Access Suite) 

AD에서 SSO구현하기

https://gruuuuu.github.io/windows/adfs/

 

Windows Server 2019 ADFS구축하기

Active Directory Federation Services(AD FS)란? Microsoft사에서 개발한 SSO(Single Sign-On) 솔루션입니다. Active Directory(AD)서비스와 인증하고자 하는 클라이언트 애플리케이션 사이의 인증과 권한을 관리하게 됩

gruuuuu.github.io

 


 

전체 내용 참고 : https://gruuuuu.github.io/security/ssofriends/

 

호다닥 공부해보는 SSO와 친구들 (SAML, OAuth, OIDC)

Overview 우리는 여러 사이트를 돌아다니면서 내가 “나”임을 증명하기 위해 계정을 만들고 로그인을 하게 됩니다. 예전에는 여러 사이트마다 각자 계정을 만드는 일이 잦았는데 최근엔 대형 회

gruuuuu.github.io

https://www.okta.com/identity-101/whats-the-difference-between-oauth-openid-connect-and-saml/

 

What’s the Difference Between OAuth, OpenID Connect, and SAML? | Okta

Learn more about OAuth 2.0, OpenID Connect, and SAML, the differences between the three and each of their use cases.

www.okta.com