AuthorizationService/de

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(Created page with "Der Autorisierungsdienst ist derzeit nur ein Skelett, das später erweitert werden soll. Im Grid-Modus kann er jedoch zur Kommunikation mit einem externen Autorisierungsdienst...")
 
(Configuration)
Line 4: Line 4:
 
Um Ihre Region auf einen externen Autorisierungsdienst zu verweisen, bearbeiten Sie die Datei
 
Um Ihre Region auf einen externen Autorisierungsdienst zu verweisen, bearbeiten Sie die Datei
  
'''bin/config-include/GridCommon.ini'''
+
'''opensim/bin/config-include/GridCommon.ini'''
  
 
Fügen Sie einen Abschnitt wie den folgenden hinzu, und ändern Sie den URI so, dass er auf Ihren Autorisierungsserver verweist
 
Fügen Sie einen Abschnitt wie den folgenden hinzu, und ändern Sie den URI so, dass er auf Ihren Autorisierungsserver verweist

Revision as of 03:56, 12 October 2018

Der Autorisierungsdienst ist derzeit nur ein Skelett, das später erweitert werden soll. Im Grid-Modus kann er jedoch zur Kommunikation mit einem externen Autorisierungsdienst verwendet werden.

Configuration

Um Ihre Region auf einen externen Autorisierungsdienst zu verweisen, bearbeiten Sie die Datei

opensim/bin/config-include/GridCommon.ini

Fügen Sie einen Abschnitt wie den folgenden hinzu, und ändern Sie den URI so, dass er auf Ihren Autorisierungsserver verweist

[AuthorizationService]
    ;
    ; Ändern Sie dies in Ihrem grid-wide Autorisierungsserver.
    ;
    AuthorizationServerURI = "http://localhost/auth.php"

Nachrichtenformate

Wenn ein Benutzer versucht, eine Region einzugeben, wird ein HTTP-POST an die AuthorizationServerURI gesendet, die Sie in der Konfiguration angegeben haben. Der Hauptteil des POST ist ein XML-serialisiertes AuthorizationRequest-Objekt.

Beispiel

<?xml version="1.0" encoding="utf-8"?>
    <AuthorizationRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <ID>decc5198-9de2-11de-be89-00145eecaa9a</ID>
        <FirstName>Rob</FirstName>
        <SurName>Smart</SurName>
        <Email>user@host.com</Email>
        <RegionName>test region</RegionName>
        <RegionID>e276e142-a099-4d6d-8f2d-0aad91ede958</RegionID>
    </AuthorizationRequest>

Der Autorisierungsdienst muss mit einer XML-Nachricht antworten, die mit einem XML-serialisierten AuthorizationResponse-Objekt übereinstimmt.

Beispiel

<?xml version="1.0" encoding="utf-8"?>
    <AuthorizationResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <IsAuthorized>true</IsAuthorized>
        <Message>Rob Smart has been authorized for the region test region.</Message>
    </AuthorizationResponse>

Das IsAuthorized Element muss entweder die Zeichenfolge True oder die Zeichenfolge False enthalten . Das Nachrichtenelement kann eine beliebige Zeichenfolge enthalten. In diesem Moment wird diese Nachricht nur in der OpenSimulator-Regionenkonsole angezeigt.

Beispiel PHP

Ein einfaches PHP-Beispiel zum Parsen der Autorisierungs-XML und zur Antwort.

<?php
class AuthorizationResponse
{
    private $m_isAuthorized;
    private $m_message;
 
    public function AuthorizationResponse($isAuthorized,$message)
    {
        $this->m_isAuthorized = $isAuthorized;
        $this->m_message = $message;
    }
 
    public function toXML()
    {
        return '<?xml version="1.0" encoding="utf-8"?><AuthorizationResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><IsAuthorized>'. $this->m_isAuthorized .'</IsAuthorized><Message>'. $this->m_message .'</Message></AuthorizationResponse>';
 
    }
}
 
class AuthorizationRequest
{
    private $m_isAuthorized;
    private $m_message;    	
    public $ID;
    public $FirstName;
    public $SurName;
    public $Email;
    public $RegionName;
    public $RegionID;    	
 
    public function parseRequest($request)
    {
        $reader = new XMLReader();
        $reader->XML($request);
 
        while ($reader->read()) 
        {
            if ($reader->nodeType == XMLReader::ELEMENT) 
            {
                switch($reader->name)
                {
                    case 'AuthorizationRequest':
                    // $log->write("AuthorizationRequest element");
                    break;	
                    case 'ID':
                        $reader->read();
                        $this->ID = $reader->value;
                    break;
                    case 'FirstName':
                        $reader->read();
                        $this->FirstName = $reader->value;
                    break;
                    case 'SurName':
                        $reader->read();
                        $this->SurName = $reader->value;
                    break;
                    case 'Email':
                        $reader->read();
                        $this->Email = $reader->value;
                    break;
                    case 'RegionName':
                        $reader->read();
                        $this->RegionName = $reader->value;
                    break;
                    case 'RegionID':
                        $reader->read();
                        $this->RegionID = $reader->value;
                    break;
                }
            }
        }
    }
}
 
$request = @file_get_contents('php://input');
$authReq = new AuthorizationRequest();
$authReq->parseRequest($request);
$authResp = new AuthorizationResponse("true", "You are authorized");
echo $authResp->toXML();
?>
Personal tools
General
About This Wiki