2012-01-17 2 views
4

DotNetOpenAuth를 사용하여 OpenID 제공 업체를 설정하고 있는데 문제가 있습니다.사용자에게 OpenID URL을 묻지 않고 OpenID를 사용하는 방법은 무엇입니까?

OpenID는 사용자가 자신의 OpenID URL을 먼저 제공 한 다음 소비자가 그를 URL로 매개 변수 (checkid_setup mode)를 제공하여 공급자로 리디렉션해야합니다.

하지만 Google과 일부 다른 제공 업체의 경우 다르게 작동합니다. 로그인하거나 이미 로그인 한 계정 중 하나를 선택하는 일반 페이지로 리디렉션됩니다. 또는 단일 계정으로 로그인 한 경우 다시 리디렉션됩니다.

어떻게 든이 checkid_immediate 모드와 관련이 있습니까? 그렇다면 어떻게 작동하는지 설명하는 기사에 대한 링크를 제공하십시오.

답변

4

표시되는 동작의 차이는 사용자가 알아 차리는 checkid_setup 및 checkid_immediate 모드와 직각입니다.

사용자가 자신의 OpenID를 입력하면 소유권이 주장 된 식별자이라고합니다. 대신 사용자가 자신의 공급자 (예 : 귀하의 경우 Google)를 클릭 (또는 유형 지정)하면 OP 식별자이라고합니다.

예를 들어 OpenID 상자에 https://www.google.com/accounts/o8/id을 입력하면 사용자가 귀하의 웹 사이트에 로그인 할 때 Google이 사용자를 돕기 때문에 설명하는 동작이 표시됩니다. 사이트가 ASP.NET 웹 폼 기반으로하는 경우

  1. , 당신은 적절한 프로퍼티에 https://www.google.com/accounts/o8/id 식별자를 입력의 OpenIdButton 컨트롤을 사용할 수 있습니다 :

    그래서이 시점에서 당신은 몇 가지 옵션이 있습니다 사용자는 해당 버튼을 클릭하여 Google 계정을 사용하여 간단히 로그인 할 수 있습니다.

  2. MVC를 사용하거나 (웹 양식을 사용하지만 프로그래밍 방식으로이 작업을 수행하려는 경우) OpenIdRelyingParty.CreateRequest("https://www.google.com/accounts/o8/id")으로 전화하여 결과가있는 사용자를 Google로 리디렉션 할 수 있습니다.

사용자가 이미 Google에 로그인 한 경우 Google에 로그인 할 필요가 없습니다. 사용자가 이미 웹 사이트 로그인을 승인했다는 메시지를 Google에 전하는 경우이 로그인 과정에서 Google은 전혀 표시되지 않습니다.

+0

소비자가 아닌 OpenID 제공 업체를 설정하고 있습니다. 그러나 어쨌든 고마워요, 지금은 어떻게 작동하는지 충분히 이해하고 있다고 생각합니다. –

+0

오, 이런. 알지 못해서 미안해. RP가 위에서 설명한대로 할 수있게 해주는 자신의 공급자를 원한다면 DNOA 샘플이 보여주는 OP 식별자 URL을 제공해야합니다. 그런 다음 OP 끝점 내에서 당신은 IAuthenticationRequest.IsDirectedIdentity를 지원해야하며, 로그인 한 사용자의 주장 된 식별자를 결정하고 auth 응답에 직접 설정해야합니다. –

관련 문제