Version 4 of OpenID

Updated 2006-12-30 22:46:44

Zarutian 29. desember 2006: I am not quite understanding the spec http://openid.net/specs/openid-authentication-1_1.html

Zarutian 20. desember 2006: Starting of an OpenID consumer package

 package require http
 proc geturl {url} {
   if {![regexp {^http://.*} $url]} { set url "http://[set url]" }
   set token [http::geturl $url]
   set ncode [http::ncode $token]
   if {($ncode == "301") || ($ncode == "302")} {
     # an redirect
     upvar #0 $token state
     if {![info exists state(meta)]} { error }
     array set meta $state(meta)
     if {![info exists meta(Location)]} { error }
     return [geturl $meta(Location)]
   }

   set data [http::data $token]  
   http::cleanup $token
   return $data
 }

 proc find_openid.server {input} {
   # <link rel="openid.server" href="http://openid.example.com/">
   if {[regexp {.*<link rel="openid.server" href="(.*)"/?>.*} $input dummy server]} {
     return $server
   } else {
     return {}
   }
 }
 proc find_openid.delegate {input} {
   # <link rel="openid.delegate" href="http://exampleuser.livejournal.com/">
   if {[regexp {.*<link rel="openid.delegate" href="(.*)"/?>.*} $input dummy delegate]} {
     return $delegate
   } else {
     return {}
   }
 }

 proc openid_checkid_immediate {url} {
   set stuff [geturl $url]
   puts "openid server = [find_openid.server $stuff]"
   puts "openid delegate = [find_openid.delegate $stuff]"
 }