OpenID

Aus Line5 Wiki
Wechseln zu: Navigation, Suche

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