문제

나는 Open ID로 작업하고 있습니다. 단지 내 사이트에서 상호 작용 / 인증 Open ID를 상호 작용하기 위해 수업을 만들고 있습니다 (PHP). RPX와 같은 다른 라이브러리가 몇 개 있다는 것을 알고 있지만 내 자신을 사용하고 싶습니다 (프로토콜을 더 잘 이해하고 나에게 적합한지를 더 잘 이해하는 데 도움이됩니다).

내가 가진 질문은 공개 ID 발견 시퀀스와 관련이 있습니다. 기본적으로 나는 XRDS Doc을 사용하여 청구 된 신원 (OpenID.CleaImed_id)에서 로컬 ID (OpenID.Identity)를 얻는 지점에 도달했습니다.

내 질문은 XRDS 위치 (X-XRDS-location)를 얻으려면 컬 요청을 한 다음 실제 XRDS 문서를 얻기 위해 다른 컬 요청을 만들어야합니까?

멍청한 요청이있는 것 같습니다. 하나의 컬 요청 만 만들고 열린 ID 서버를 가져 오지만 XRDS 스마트 방법을 사용하려면 두 개를 만들어야합니다. 옳지 않은 것 같지 않습니다. 다른 사람이 나에게 정보를 줄 수 있습니까?

도움이 되었습니까?

해결책

완료하려면 RP가 HTTP가 사용자가 제공하는 URL에 들어가야 한 다음 XRDS 문서 참조를 검색하고 다른 HTTP를 찾아야합니다. XRD는 다른 서버에서 호스팅 될 수 있으므로 연결이 동일하지 않기 때문에 두 요청간에 연결이 동일 해야하는 모든 것을 코딩하지 마십시오.

초기 HTTP에 요청하는 경우 HTTP 헤더를 포함시킵니다.

Accept: application/xrds+xml

그런 다음 페이지가 XRDS 링크를 구문 분석 해야하는 HTML 문서 대신 XRDS 문서로 즉시 응답 할 수 있습니다. 콘텐츠 유형 헤더에서 Application/XRDS+XML의 HTTP 응답 헤더를 확인하여 이런 일이 발생했음을 감지 할 수 있습니다. 이것은 RPS가 일반적으로 두 번째 HTTP를 호출 할 필요가 없도록 최적화이므로 발생하는 데 의존 할 수는 없습니다.

다른 팁

내가 줄 수있는 최선의 조언은 HTTP를 약간 요청한 다음 HTTP 요청을 두 번 수행하는 전체 프로세스를 살펴 보는 것입니다.

지속적인 연결을 사용하여 속도를 높이려면 컬 인스턴스를 유지할 수 있지만 원하는 것을 원하거나 원하지 않을 수도 있습니다.

나는 이것이 도움이되기를 바랍니다. 행운을 빕니다 .. OpenID는 webdav = 이후 내가 겪은 가장 부피가 크고 복잡한 웹 표준 중 하나입니다.

뒤집다

나는 여기서 게임에 늦었다는 것을 알고 있지만, 당신도 체크 아웃해야한다고 생각합니다. Webfinger 프로토콜. 표준 "이메일을 userID"패턴으로 취하고 OpenID 등을 발견하기 위해 조회를 수행 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top