2009-04-23 2 views
3

Open ID로 작업 중이며, PHP에서 내 사이트에서 Open ID를 상호 작용하도록 인증하려고합니다. RPX와 같은 몇 가지 다른 라이브러리가 있다는 것을 알고 있습니다. 그러나 필자는 자신 만의 프로토콜을 사용하여 더 나은 프로토콜을 이해하고 저에게 적합한지를 잘 알고 있습니다.Open Id XRDS Discovery

내가 가진 질문은 개방형 ID 발견 시퀀스와 관련이 있습니다. 기본적으로 XRDS 문서를 사용하여 소유권 주장 (openid.claimed_id)에서 로컬 ID (openid.identity)를 얻으려는 시점에 도달했습니다.

내 질문은 XRDS 위치 (X-XRDS- 위치)를 가져오고 실제 XRDS 문서를 얻기위한 다른 cURL 요청을하기 위해 cURL 요청을해야합니까?

DUMB 요청과 같이 하나의 cURL 요청 만하고 Open Id 서버를 얻지 만 XRDS Smart 메서드를 사용하려면 두 개를 만들어야합니다. 그냥 옳은 것처럼 보이지 않습니다. 누군가 다른 사람에게 정보를 줄 수 있습니까?

답변

2

가 완료하려면, 그래, 당신의 RP는 사용자가 제공 한 URL에서 HTTP GET을 수행 한 다음 XRDS 문서 참조를 검색하고 거기에서 다른 HTTP GET을 수행해야합니다. XRDS는 다른 서버에서 호스팅 될 수 있으므로 동일한 연결이 아니 어서 두 요청간에 연결이 동일해야하는 코드를 작성하지 마십시오.

Accept: application/xrds+xml 

그런 다음 페이지가 XRDS 문서가 아니라 당신이 XRDS 링크에 대해 분석 할 필요가 HTML 문서에 즉시 응답 할 수 있습니다 :

은 초기 HTTP GET 요청의 경우는 HTTP 헤더를 포함한다. Content-Type 헤더의 application/xrds + xml에 대한 HTTP 응답 헤더를 확인하여이 문제가 발생했음을 감지 할 수 있습니다. 이는 RP가 일반적으로 두 번째 HTTP GET 호출을 수행하지 않아도되도록 최적화되었지만 실제로는 그럴 수 없습니다.

0

내가 줄 수있는 최선의 조언은 HTTP 요청을 약간 추상화 한 다음 HTTP 요청을 두 번 처리하는 전체 과정을 거치려는 것입니다.

영구 연결을 사용하여 작업 속도를 높이려면 컬 인스턴스를 유지할 수 있지만 원할 수도 있고 그렇지 않을 수도 있습니다.

나는이 도움이, 그리고 행운이 ... 오픈 ID 내가 WebDAV를 이후로 건너 것 중 가장 부피가 크고 복잡한 웹 표준 중 하나입니다 희망 =)

에버트

0

나는 게임에 늦었다 고 알고있다. 그러나 나는 또한 the webfinger protocol을 확인해야한다고 생각한다. 표준 "emailid userid"패턴을 취하여 거기에서 조회하여 openid 등을 찾습니다.

관련 문제