OpenID
OpenID
OpenID ist ein Single-Sign-On Verfahren zur Authentifizierung auf mehreren Websites mit nur einem Passwort. Den einzelnen Websites wird dabei das Passwort nicht mitgeteilt; der Login erfolgt immer auf der Seite des OpenID-Providers.
Implementierung eines eigenen OpenID Servers
Eine Datenbankabfrage zur Authentifizierung kann in der Datei lib/actions.php, Funktion login_checkInput eingebaut werden:
/**
* Check the input values for a login request
*/
function login_checkInput($input)
{
$openid_url = false;
$errors = array();
if (!isset($input['openid_url'])) {
$errors[] = 'Enter an OpenID URL to continue';
}
// Hier Authentifizierung einbauen, beispielsweise:
if (!$input['openid_password'] == 'meinPasswort')
{
$errors[] = 'Das Passwort stimmt leider nicht.';
}
if (count($errors) == 0) {
$openid_url = $input['openid_url'];
}
return array($errors, $openid_url);
}
Dementsprechend muss auch das Template in der Datei lib/render/login.php angepasst werden - etwa so:
<blabla>
<form method="post" action="%s">
<table>
<tr>
<th><label for="openid_url">Name:</label></th>
<td><input type="text" name="openid_url"
value="%s" id="openid_url" /></td>
</tr>
<tr>
<th><label for="openid_password">Password:</label></th>
<td><input type="password" name="openid_password"
value="" id="openid_password" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Log in" />
<input type="submit" name="cancel" value="Cancel" />
</td>
</tr>
</table>
</form>
Mögliche Fehlermeldung: OpenID authentication failed: Server denied check_authentication
Ist der OpenID-Server per SSL geschützt, kann es zu diesem Fehler kommen, wenn die CA-Zertifikate nicht installiert sind. Curl baut in diesem Falle keine Verbindung zu SSL-gesicherten Websites auf. Leider wird die Curl-Fehlermeldung an dieser Stelle nicht ausgegeben. Abhilfe durch Installation der Zertifikate:
# apt-get install ca-certificates