현재 도메인 간 SSO 구현을 연구하고 있으며 제 3 자 SSO 공급자를 사용할 수 없을 수도 있습니다.SSO 구현시 발생할 수있는 보안 문제는 무엇입니까?
일련의 리디렉션과 암호화 된 쿼리 문자열 매개 변수가 포함 된 맞춤형 구현 온라인을 발견했습니다. http://www.foo.com
MrUser에
MrUser 로그 bar.com에 인증되지
http://www.bar.com/page.aspx
MrUser 링크를 클릭하지만 bar.com
http://www.foo.com/sso.aspx
리디렉션 인증 코드를 가지고
sso.aspx 페이지는 쿠키 컬렉션에서 유효한 ASP.NET 인증 쿠키를 확인합니다. 존재하는 경우 sso.aspx는
http://www.bar.com/page.aspx&ssoauth=[encryptedkey]
으로 리디렉션됩니다 (여기서[encryptedkey]
은 foo.com과 bar.com이 동의 한 MrUser의 암호화 된 ID입니다). 유효한 ASP.NET 인증 쿠키가없는 경우ssoauth
매개 변수없이 리디렉션됩니다.Bar.com은 무한 리디렉션 루프를 방지하기 위해 검사를 수행 한 다음
ssoauth
값의 암호를 해독합니다. ssoauth 매개 변수가 없으면 MrUser는 로그인 페이지로 리디렉션됩니다. 그렇지 않으면 Bar.com은 해독 된 ID를 사용하여 MrUser를 인증 한 후 page.aspx로 보냅니다.
이 메서드의 잠재적 인 보안 문제 (또는 다른 유형의 문제)는 무엇입니까?
(인용 : http://blogs.neudesic.com/blogs/michael_morozov/archive/2006/03/17/72.aspx)
편집 : 암호화 된 ID가 매번 동일하고, 공격자가 액세스하는 데 사용할 수 있다는 것을 인용 답변에 대응 - bar.com가를 확인하면 어떻게 foo.com의 ssoauth 매개 변수 만 받아 들일 수 있도록 referrer?
클레임 기반 보안 및 코드 명 "Velocity"를 살펴 보시기 바랍니다. –
리퍼러는 믿을 수 없을만큼 쉽게 스푸핑 할 수 있습니다. SSO로 암호화 된 키가 진짜임을 보장하는 유일한 방법은 생성 서버가 요청을 수행하는 시스템의 풋 프린트를 암호화하도록하는 것입니다. 발자국은 복제/스푸핑 할 수없는 공간이별로 없기 때문에 매우 어렵습니다. –