4

2 개의 웹 응용 프로그램, 응용 프로그램 A 및 응용 프로그램 B간에 SSO 인증을 개발하려고합니다. 응용 프로그램 A는 MVC 4 응용 프로그램이고 응용 프로그램 B는 MVC 3 응용 프로그램입니다.SSO 폼 인증 문제입니다. 인증 쿠키를 해독 할 수 없습니다.

무엇 발생해야하는 것은 : 사용자가 응용 프로그램 B에 액세스하려고 할 때, 그는 자신이 A 응용 프로그램에 로그인하는

  • 후 응용 프로그램의 로그인 페이지로 리디렉션됩니다

    1. , 그는 리디렉션됩니다 응용 프로그램 B에

    무엇 실제로 일어나는 것은 :

    1. 사용자가 어플리에 액세스하려고 양이온 B, 그는 A 응용 프로그램에 로그인 애플리케이션 A를
    2. 사용자 로그를 리디렉션됩니다, 그는
    3. 여기에 응용 프로그램 B로 리디렉션됩니다 그가 인 것처럼 응용 프로그램 B는 로그인 애플리케이션 A를 다시 사용자를 리디렉션 때문에 뭔가 잘못
      1. 는 인증 쿠키는
      2. 확인 응용 프로그램 B에 전달되고 있음을 확인 : 아직

      로그인 나는 무엇이 잘못되었는지 파악하려면 다음 단계를 완료했습니다 컴퓨터 키 유효성 검사 및 암호 해독 키는 web.config의 두 응용 프로그램에서 동일합니다.

    4. 확인 된 enableCrossAppRedirects가 web.config에서 활성화되었습니다.
    5. 이 포럼 게시물의 코드를 사용하여 두 응용 프로그램 모두에서 인증을 해독 할 수 있는지 확인했습니다 쿠키 : http://forums.asp.net/t/1762166.aspx/1
    6. 인증 쿠키가 성공적으로 A 응용 프로그램에 해독이 아닌 응용 프로그램 B. 응용 프로그램 B에는 FormsAuthentication.Decrypt 방법 중 예외 "가 데이터의 유효성을 검사 할 수 없습니다"제공

    이 사람이 나를 도와 드릴까요? 왜 그들은 동일한 기계 키를 사용하더라도 해독에 실패 했습니까? 이 인증 방법에 여전히 의지 할 수 있습니까? 이 기사에서는 더 이상 신뢰할 수 없다고 말합니다. http://blog.appharbor.com/2012/02/22/asp-net-forms-authentication-considered-broken

    고마워요!

  • +0

    쿠키를 A에서 B로 어떻게 전달합니까? 나는 그들이 다른 영역에 있다고 가정합니까? –

    +0

    아니요, 동일한 도메인이지만 다른 웹 응용 프로그램입니다. 쿠키는 요청 헤더의 브라우저에 의해 자동으로 전달됩니다. –

    +0

    https://www.app.com/a/login 및 https://www.app.com/b/login? –

    답변

    3

    Uf .. 결국 문제가 발견되었습니다. 문제는 응용 프로그램 A가 .NET Framework 4.5를 대상으로하고 응용 프로그램 B가 .NET Framework 4를 대상으로하기 때문입니다.

    나는 이걸 의심 스럽지만 프로젝트 속성에서 대상 프레임 워크를 변경하는 것만으로는 충분하지 않습니다. 응용 프로그램 B web.config에 이것을 <httpRuntime targetFramework="4.5"/>에 추가해야 제대로 작동합니다.