2009-05-09 4 views
8

내가 OpenID에서 한 대부분의 독서에서 브라우저가 필요할 수도 있습니다. 난 WCF 애플 리케이션을 작성하고 인증 방법으로 OpenID를 사용하고 싶었지만, 내 애플 리케이션은 웹 애플 리케이션이 아닙니다. 웹 브라우저 없이도 WCF와 OpenID를 함께 사용할 수 있습니까? OpenID Authentication 2.0 Specification을 읽는에서OpenID를 WCF와 브라우저없이 사용할 수 있습니까?

+0

매우 늦은 의견을 사과드립니다. 하지만 "브라우저가 없음"으로 로그인 창을 표시하고 사용자가 Google 사용자 이름과 비밀번호를 입력하도록 할 수 있습니까? 내가 사용자 인 경우에는 결코 내 사용자/암호를 알려주지 않을 것입니다. –

답변

10

오픈 ID는 쿠키에서의 사양 독립성에 권유 할 수 있지만 이러한 사양 때문에 실제로 이러한 것들이 어떻게 사용되는지를 요구하지는 않습니다. 실제로 웹 사이트에 로그인하는 것 이외에는 좋은 OpenID 솔루션을 본적이 없습니다.

그러나 아직 가서 WCF와 OpenID를 사용하는 좋은 방법이 있습니다. 믹스에 OAuth를 추가하십시오. DotNetOpenAuth 라이브러리에는 WCF 클라이언트가 OAuth를 통해 WCF 서비스 호출 권한을 얻는 방법을 보여주는 샘플이 있습니다. 서비스 측면에서는 사용자가 OpenID를 사용하여 권한 부여 프로세스의 일부로 로그인합니다.

그래서 기본적으로 당신이 응용 프로그램은 한 번 설치의 일부로 WCF 서비스를 호출하기 위해서는 "로그인"할 필요가 WCF 경우 :

  1. 사용자가 보는 곳이 애플리케이션은 브라우저를 팝업
  2. 사용자가 이미 로그인했을 수도 있지만 사용자가 이미 로그인했을 수도 있지만이 단계는 건너 뛸 수 있습니다.
  3. OAuth SP는 사용자에게 "do 이 [wcf app]이이 사이트에 액세스하도록 승인 하시겠습니까? "
  4. 사용자가 예라고 말하고 브라우저를 닫습니다.
  5. 이제 WCF 응용 프로그램은 OAuth 프로토콜 덕분에 WCF 서비스에 액세스 할 수 있습니다.

이것은 사용자가 웹 브라우저를 통해 서비스에 "예"라고 말하면 특수 WCF 응용 프로그램에 할당되며 이는 모든 WCF 서비스 호출과 함께 사용됩니다 비슷한 방법으로 사용자 이름/암호가됩니다.

DotNetOpenAuth 라이브러리를 확인하십시오. 샘플을 가지고 있으며이 작업을하기 위해 필요한 모든 것이 있습니다.

+0

이 게시물은 매우 통찰력, 감사했습니다! DotNetOpenAuth를 살펴 보겠습니다. –

1

, 나는 대답에 도착 것 같다 :

프로토콜에 아무것도 자바 스크립트 또는 최신 브라우저이 필요 없지만은, 인증 방식은 "AJAX"스타일 설정과 함께 잘한다. 이는 최종 사용자가 현재 웹 페이지를 떠나지 않고도 자신의 신원을 신뢰 당사자에게 증명할 수 있음을 의미합니다.

OpenID 인증은 표준 HTTP (S) 요청 및 응답 만 사용하므로 사용자 에이전트 또는 다른 클라이언트 소프트웨어의 특수 기능이 필요하지 않습니다. OpenID는 쿠키 또는 Relying Party 또는 OpenID Provider 세션 관리의 다른 특정 메커니즘의 사용과 관련이 없습니다. 사용자 에이전트에 대한 확장은 최종 사용자 상호 작용을 단순화 할 수 있지만 프로토콜을 사용할 필요는 없습니다.

지금은 그냥이 WCF 기반의 신뢰 당사자와 함께 작동하도록 얻을 수있는 영리한 방법을 알아 내야 ...

1

OpenIdMembershipProvider (다른 사람이있을 수도 있음)을 선택하십시오. Then configure Message security in WCF, with Username authentication, then you can use the ASPNET MembershipProvider to authenticate your user. 더 쉬운 해결책을 찾을 수있을 것 같지 않습니다.)

+0

이것은 정말 간단하게 들립니다. 브라우저 상호 작용이 필요하지 않습니까? –

+0

브라우저 상호 작용은 필요하지 않지만이 공급자를 사용하는 방법을 모르겠다. 아마도 ASP.NET에서 호환성 모드를 활성화 할 수있는 기능이 있습니다. 참조 : http://msdn.microsoft.com/en-us/library/aa702682.aspx 존재하는 OpenIDMembershipProvider가 여러 개 있는데 테스트하지 않았습니다. 예상대로 작동한다고 가정하면 openIdMembershipProvider를 "플러그"한 다음 WCF를 사용하여 요청을 인증하는 데 사용해야합니다. –

관련 문제