Using Virtuoso's WebID? Verify Proxy Service with an X.509 certificate WebID?: VSP Example
<?vsp
declare webid, error, action, hostUrl, url, callback, certificate any;
webid := get_keyword ('webid', params);
error := get_keyword ('error', params);
action := get_keyword ('go', params);
if (length (webid) or length (error))
goto html;
if (not length (action))
goto html;
if (not is_http_ctx ())
{
error := 'No certificate';
goto html;
}
hostUrl := http_request_header (http_request_header () , 'Host' , null , sys_connected_server_address ());
if (isstring (hostUrl) and strchr (hostUrl , ':') is null)
{
declare hp varchar;
declare hpa any;
hp := sys_connected_server_address ();
hpa := split_and_decode (hp , 0 , '\0\0:');
if (hpa [1] <> '80')
hostUrl := hostUrl || ':' || hpa [1];
}
if (hostUrl not like 'https://%')
hostUrl := 'https://' || hostUrl;
certificate := client_attr ('client_certificate');
callback := hostUrl || '/ods/webid_demo.vsp';
url := sprintf ('http://id.myopenlink.net/ods/webid_verify.vsp?callback=%U&certificate=%U', callback, certificate);
http_status_set (302);
http_header (sprintf ('Location: %s\r\n', url));
return;
html:
?>
<html>
<head>
<title>WebID Verification Demo - VSP</title>
</head>
<body>
<h1>WebID Verification Demo - VSP</h1>
<div>
This will check your X.509 Certificate's WebID watermark. <br/>Also note this service supports ldap, http, mailto, acct scheme based WebIDs.
</div>
<br/>
<br/>
<div>
<form method="get">
<input type="submit" name="go" value="Check"/>
</form>
</div>
<?vsp
if (length (webid) or length (error))
{
?>
<div>
The return values are:
<ul>
<?vsp
if (length (webid))
{
?>
<li>WebID - <?V webid ?></li>
<li>Timestamp in ISO 8601 format - <?V get_keyword ('ts', params) ?></li>
<?vsp
}
if (length (error))
{
?>
<li>Error - <?V error ?></li>
<?vsp
}
?>
</ul>
</div>
<?vsp
}
?>
</body>
</html>