gehe zum Quellcode dieser Datei
Datenstrukturen | |
class | Auth_OpenID_ServiceEndpoint |
Aufzählungen | |
enum | Auth_OpenID_XMLNS_1_0 |
enum | Auth_OpenID_TYPE_1_2 |
enum | Auth_OpenID_TYPE_1_1 |
enum | Auth_OpenID_TYPE_1_0 |
enum | Auth_OpenID_TYPE_2_0_IDP |
enum | Auth_OpenID_TYPE_2_0 |
enum | Auth_OpenID_RP_RETURN_TO_URL_TYPE |
Funktionen | |
Auth_OpenID_getOpenIDTypeURIs () | |
Auth_OpenID_findOPLocalIdentifier ($service, $type_uris) | |
filter_MatchesAnyOpenIDType (&$service) | |
Auth_OpenID_bestMatchingService ($service, $preferred_types) | |
Auth_OpenID_arrangeByType ($service_list, $preferred_types) | |
Auth_OpenID_getOPOrUserServices ($openid_services) | |
Auth_OpenID_makeOpenIDEndpoints ($uri, $yadis_services) | |
Auth_OpenID_discoverWithYadis ($uri, &$fetcher, $endpoint_filter='Auth_OpenID_getOPOrUserServices', $discover_function=null) | |
Auth_OpenID_discoverURI ($uri, &$fetcher) | |
Auth_OpenID_discoverWithoutYadis ($uri, &$fetcher) | |
Auth_OpenID_discoverXRI ($iname, &$fetcher) | |
Auth_OpenID_discover ($uri, &$fetcher) |
Definiert in Zeile 22 der Datei Discover.php.
enum Auth_OpenID_TYPE_1_0 |
Definiert in Zeile 19 der Datei Discover.php.
enum Auth_OpenID_TYPE_1_1 |
Definiert in Zeile 18 der Datei Discover.php.
enum Auth_OpenID_TYPE_1_2 |
Definiert in Zeile 17 der Datei Discover.php.
enum Auth_OpenID_TYPE_2_0 |
Definiert in Zeile 21 der Datei Discover.php.
Definiert in Zeile 20 der Datei Discover.php.
The OpenID and Yadis discovery implementation for OpenID 1.2.
Definiert in Zeile 14 der Datei Discover.php.
Auth_OpenID_arrangeByType | ( | $ | service_list, | |
$ | preferred_types | |||
) |
Definiert in Zeile 339 der Datei Discover.php.
00341 { 00342 // Rearrange service_list in a new list so services are ordered by 00343 // types listed in preferred_types. Return the new list. 00344 00345 // Build a list with the service elements in tuples whose 00346 // comparison will prefer the one with the best matching service 00347 $prio_services = array(); 00348 foreach ($service_list as $index => $service) { 00349 $prio_services[] = array(Auth_OpenID_bestMatchingService($service, 00350 $preferred_types), 00351 $index, $service); 00352 } 00353 00354 sort($prio_services); 00355 00356 // Now that the services are sorted by priority, remove the sort 00357 // keys from the list. 00358 foreach ($prio_services as $index => $s) { 00359 $prio_services[$index] = $prio_services[$index][2]; 00360 } 00361 00362 return $prio_services;
Auth_OpenID_bestMatchingService | ( | $ | service, | |
$ | preferred_types | |||
) |
Definiert in Zeile 320 der Datei Discover.php.
00322 { 00323 // Return the index of the first matching type, or something 00324 // higher if no type matches. 00325 // 00326 // This provides an ordering in which service elements that 00327 // contain a type that comes earlier in the preferred types list 00328 // come before service elements that come later. If a service 00329 // element has more than one type, the most preferred one wins. 00330 00331 foreach ($preferred_types as $index => $typ) { 00332 if (in_array($typ, $service->type_uris)) { 00333 return $index; 00334 } 00335 } 00336 00337 return count($preferred_types);
Auth_OpenID_discover | ( | $ | uri, | |
&$ | fetcher | |||
) |
Definiert in Zeile 515 der Datei Discover.php.
00517 { 00518 // If the fetcher (i.e., PHP) doesn't support SSL, we can't do 00519 // discovery on an HTTPS URL. 00520 if ($fetcher->isHTTPS($uri) && !$fetcher->supportsSSL()) { 00521 return array($uri, array()); 00522 } 00523 00524 if (Auth_Yadis_identifierScheme($uri) == 'XRI') { 00525 $result = Auth_OpenID_discoverXRI($uri, $fetcher); 00526 } else { 00527 $result = Auth_OpenID_discoverURI($uri, $fetcher); 00528 } 00529 00530 // If the fetcher doesn't support SSL, we can't interact with 00531 // HTTPS server URLs; remove those endpoints from the list. 00532 if (!$fetcher->supportsSSL()) { 00533 $http_endpoints = array(); 00534 list($new_uri, $endpoints) = $result; 00535 00536 foreach ($endpoints as $e) { 00537 if (!$fetcher->isHTTPS($e->server_url)) { 00538 $http_endpoints[] = $e; 00539 } 00540 } 00541 00542 $result = array($new_uri, $http_endpoints); 00543 } 00544 00545 return $result;
Auth_OpenID_discoverURI | ( | $ | uri, | |
&$ | fetcher | |||
) |
Definiert in Zeile 467 der Datei Discover.php.
00469 { 00470 $uri = Auth_OpenID::normalizeUrl($uri); 00471 return Auth_OpenID_discoverWithYadis($uri, $fetcher);
Auth_OpenID_discoverWithoutYadis | ( | $ | uri, | |
&$ | fetcher | |||
) |
Definiert in Zeile 473 der Datei Discover.php.
00475 { 00476 $http_resp = @$fetcher->get($uri); 00477 00478 if ($http_resp->status != 200 and $http_resp->status != 206) { 00479 return array($uri, array()); 00480 } 00481 00482 $identity_url = $http_resp->final_url; 00483 00484 // Try to parse the response as HTML to get OpenID 1.0/1.1 <link 00485 // rel="..."> 00486 $openid_services = Auth_OpenID_ServiceEndpoint::fromHTML( 00487 $identity_url, 00488 $http_resp->body); 00489 00490 return array($identity_url, $openid_services);
Auth_OpenID_discoverWithYadis | ( | $ | uri, | |
&$ | fetcher, | |||
$ | endpoint_filter = 'Auth_OpenID_getOPOrUserServices' , |
|||
$ | discover_function = null | |||
) |
Definiert in Zeile 417 der Datei Discover.php.
00421 { 00422 // Discover OpenID services for a URI. Tries Yadis and falls back 00423 // on old-style <link rel='...'> discovery if Yadis fails. 00424 00425 // Might raise a yadis.discover.DiscoveryFailure if no document 00426 // came back for that URI at all. I don't think falling back to 00427 // OpenID 1.0 discovery on the same URL will help, so don't bother 00428 // to catch it. 00429 if ($discover_function === null) { 00430 $discover_function = array('Auth_Yadis_Yadis', 'discover'); 00431 } 00432 00433 $openid_services = array(); 00434 00435 $response = call_user_func_array($discover_function, 00436 array($uri, &$fetcher)); 00437 00438 $yadis_url = $response->normalized_uri; 00439 $yadis_services = array(); 00440 00441 if ($response->isFailure()) { 00442 return array($uri, array()); 00443 } 00444 00445 $openid_services = Auth_OpenID_ServiceEndpoint::fromXRDS( 00446 $yadis_url, 00447 $response->response_text); 00448 00449 if (!$openid_services) { 00450 if ($response->isXRDS()) { 00451 return Auth_OpenID_discoverWithoutYadis($uri, 00452 $fetcher); 00453 } 00454 00455 // Try to parse the response as HTML to get OpenID 1.0/1.1 00456 // <link rel="..."> 00457 $openid_services = Auth_OpenID_ServiceEndpoint::fromHTML( 00458 $yadis_url, 00459 $response->response_text); 00460 } 00461 00462 $openid_services = call_user_func_array($endpoint_filter, 00463 array(&$openid_services)); 00464 00465 return array($yadis_url, $openid_services);
Auth_OpenID_discoverXRI | ( | $ | iname, | |
&$ | fetcher | |||
) |
Definiert in Zeile 492 der Datei Discover.php.
00494 { 00495 $resolver = new Auth_Yadis_ProxyResolver($fetcher); 00496 list($canonicalID, $yadis_services) = 00497 $resolver->query($iname, 00498 Auth_OpenID_getOpenIDTypeURIs(), 00499 array('filter_MatchesAnyOpenIDType')); 00500 00501 $openid_services = Auth_OpenID_makeOpenIDEndpoints($iname, 00502 $yadis_services); 00503 00504 $openid_services = Auth_OpenID_getOPOrUserServices($openid_services); 00505 00506 for ($i = 0; $i < count($openid_services); $i++) { 00507 $openid_services[$i]->canonicalID = $canonicalID; 00508 $openid_services[$i]->claimed_id = $canonicalID; 00509 $openid_services[$i]->display_identifier = $iname; 00510 } 00511 00512 // FIXME: returned xri should probably be in some normal form 00513 return array($iname, $openid_services);
Auth_OpenID_findOPLocalIdentifier | ( | $ | service, | |
$ | type_uris | |||
) |
Definiert in Zeile 262 der Datei Discover.php.
00264 { 00265 // Extract a openid:Delegate value from a Yadis Service element. 00266 // If no delegate is found, returns null. Returns false on 00267 // discovery failure (when multiple delegate/localID tags have 00268 // different values). 00269 00270 $service->parser->registerNamespace('openid', 00271 Auth_OpenID_XMLNS_1_0); 00272 00273 $service->parser->registerNamespace('xrd', 00274 Auth_Yadis_XMLNS_XRD_2_0); 00275 00276 $parser =& $service->parser; 00277 00278 $permitted_tags = array(); 00279 00280 if (in_array(Auth_OpenID_TYPE_1_1, $type_uris) || 00281 in_array(Auth_OpenID_TYPE_1_0, $type_uris)) { 00282 $permitted_tags[] = 'openid:Delegate'; 00283 } 00284 00285 if (in_array(Auth_OpenID_TYPE_2_0, $type_uris)) { 00286 $permitted_tags[] = 'xrd:LocalID'; 00287 } 00288 00289 $local_id = null; 00290 00291 foreach ($permitted_tags as $tag_name) { 00292 $tags = $service->getElements($tag_name); 00293 00294 foreach ($tags as $tag) { 00295 $content = $parser->content($tag); 00296 00297 if ($local_id === null) { 00298 $local_id = $content; 00299 } else if ($local_id != $content) { 00300 return false; 00301 } 00302 } 00303 } 00304 00305 return $local_id;
Auth_OpenID_getOpenIDTypeURIs | ( | ) |
Definiert in Zeile 24 der Datei Discover.php.
00026 { 00027 return array(Auth_OpenID_TYPE_2_0_IDP, 00028 Auth_OpenID_TYPE_2_0, 00029 Auth_OpenID_TYPE_1_2, 00030 Auth_OpenID_TYPE_1_1, 00031 Auth_OpenID_TYPE_1_0, 00032 Auth_OpenID_RP_RETURN_TO_URL_TYPE);
Auth_OpenID_getOPOrUserServices | ( | $ | openid_services | ) |
Definiert in Zeile 371 der Datei Discover.php.
00373 { 00374 $op_services = Auth_OpenID_arrangeByType($openid_services, 00375 array(Auth_OpenID_TYPE_2_0_IDP)); 00376 00377 $openid_services = Auth_OpenID_arrangeByType($openid_services, 00378 Auth_OpenID_getOpenIDTypeURIs()); 00379 00380 if ($op_services) { 00381 return $op_services; 00382 } else { 00383 return $openid_services; 00384 }
Auth_OpenID_makeOpenIDEndpoints | ( | $ | uri, | |
$ | yadis_services | |||
) |
Definiert in Zeile 386 der Datei Discover.php.
00388 { 00389 $s = array(); 00390 00391 if (!$yadis_services) { 00392 return $s; 00393 } 00394 00395 foreach ($yadis_services as $service) { 00396 $type_uris = $service->getTypes(); 00397 $uris = $service->getURIs(); 00398 00399 // If any Type URIs match and there is an endpoint URI 00400 // specified, then this is an OpenID endpoint 00401 if ($type_uris && 00402 $uris) { 00403 foreach ($uris as $service_uri) { 00404 $openid_endpoint = new Auth_OpenID_ServiceEndpoint(); 00405 if ($openid_endpoint->parseService($uri, 00406 $service_uri, 00407 $type_uris, 00408 $service)) { 00409 $s[] = $openid_endpoint; 00410 } 00411 } 00412 } 00413 } 00414 00415 return $s;
filter_MatchesAnyOpenIDType | ( | &$ | service | ) |
Definiert in Zeile 307 der Datei Discover.php.
00309 { 00310 $uris = $service->getTypes(); 00311 00312 foreach ($uris as $uri) { 00313 if (in_array($uri, Auth_OpenID_getOpenIDTypeURIs())) { 00314 return true; 00315 } 00316 } 00317 00318 return false;
Copyright © 2003 - 2009 MyOOS [Shopsystem]. All rights reserved. MyOOS [Shopsystem] is Free Software released under the GNU/GPL License. Webmaster: info@r23.de (Impressum) |
|