<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://wiki.sourceway.de/index.php?action=history&amp;feed=atom&amp;title=OAuth</id>
		<title>OAuth - Versionsgeschichte</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.sourceway.de/index.php?action=history&amp;feed=atom&amp;title=OAuth"/>
		<link rel="alternate" type="text/html" href="https://wiki.sourceway.de/index.php?title=OAuth&amp;action=history"/>
		<updated>2026-05-03T15:20:25Z</updated>
		<subtitle>Versionsgeschichte dieser Seite in sourceDESK Wiki</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>https://wiki.sourceway.de/index.php?title=OAuth&amp;diff=335&amp;oldid=prev</id>
		<title>Richard Reiber: Die Seite wurde neu angelegt: „sourceDESK kann als OAuth-Identitätsserver für andere Applikationen dienen. Dies kann dazu genutzt werden, sourceDESK als Identitätsprovider in Ihrem Untern…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.sourceway.de/index.php?title=OAuth&amp;diff=335&amp;oldid=prev"/>
				<updated>2018-10-04T23:09:16Z</updated>
		
		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „sourceDESK kann als OAuth-Identitätsserver für andere Applikationen dienen. Dies kann dazu genutzt werden, sourceDESK als Identitätsprovider in Ihrem Untern…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;sourceDESK kann als OAuth-Identitätsserver für andere Applikationen dienen. Dies kann dazu genutzt werden, sourceDESK als Identitätsprovider in Ihrem Unternehmen zu nutzen und so Zugriffsrechte und Zugangsdaten zentral zu verwalten.&lt;br /&gt;
&lt;br /&gt;
== Aktivierung des OAuth-Systems ==&lt;br /&gt;
Zur Aktivierung des OAuth-Systems müssen die Addons &amp;quot;OAuth-Server&amp;quot; und &amp;quot;OAuth-Konfiguration&amp;quot; aktiviert werden. Allen Administratoren, die sich via OAuth authentifizieren dürfen sollen, muss ein Zugriffsrecht für das Addon &amp;quot;OAuth-Server&amp;quot; eingeräumt werden. Administratoren des OAuth-Systems muss ein Zugriffsrecht für das Addon &amp;quot;OAuth-Konfiguration&amp;quot; eingeräumt werden.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration des OAuth-Systems ==&lt;br /&gt;
Administratoren mit Zugriffsrecht für das Addon &amp;quot;OAuth-Konfiguration&amp;quot; können die Client-Systeme konfigurieren. Dazu rufen Sie die Konfiguration unter &amp;quot;Addons &amp;gt; OAuth2&amp;quot; auf. Um einen Client zu erstellen benötigen Sie eine alphanumerische Client-ID und eine Redirect-URL, auf die der zu Authentifizierende nach erfolgreicher Authentifizierung weitergeleitet wird. Bei Erstellung eines Clients wird Ihnen einmalig das Client-Secret angezeigt, bitte notieren Sie sich dieses, da es später nur noch über die Datenbank abgerufen werden kann und aus Sicherheitsgründen nicht mehr angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration des Clients ==&lt;br /&gt;
Token-URL: &amp;lt;code&amp;gt;SOURCEDESK_URL/oauth2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Authentication-URL: &amp;lt;code&amp;gt;SOURCEDESK_URL/admin/?p=oauth2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Userdata-URL: &amp;lt;code&amp;gt;SOURCEDESK_URL/oauth2/user&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ablauf der Authentifizierung ==&lt;br /&gt;
A = Authentifizierungs-Server (sourceDESK)&lt;br /&gt;
&lt;br /&gt;
B = Dritt-Applikation, die Authentifizierung möglich&lt;br /&gt;
&lt;br /&gt;
C = Administrator&lt;br /&gt;
&lt;br /&gt;
# C bittet B um Login&lt;br /&gt;
# B bittet A um Challenge&lt;br /&gt;
# B leitet C auf Challenge-Seite weiter&lt;br /&gt;
# C identifiziert sich gegenüber A&lt;br /&gt;
# A leitet C zu B weiter (mit Response)&lt;br /&gt;
# B verifiziert Authentifizierung bei A, ruft die Daten von C bei A ab und führt den Login durch&lt;br /&gt;
&lt;br /&gt;
== Beispiel-Implementierung in PHP ==&lt;br /&gt;
&lt;br /&gt;
Das nachfolgende Beispiel zeigt eine beispielhafte Implementierung einer OAuth-Identifizierung mit sourceDESK als Authentifizierungsserver in PHP:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$authenticated = false;&lt;br /&gt;
&lt;br /&gt;
$oauthAuthUrl = &amp;quot;https://sourceway.de/admin/?p=oauth2&amp;quot;;&lt;br /&gt;
$oauthTokenUrl = &amp;quot;https://sourceway.de/de/oauth2&amp;quot;;&lt;br /&gt;
$oauthUserUrl = &amp;quot;https://sourceway.de/de/oauth2/user&amp;quot;;&lt;br /&gt;
$oauthJsonPath = &amp;quot;email&amp;quot;;&lt;br /&gt;
$oauthJsonValue = [&amp;quot;max@mustermann.de&amp;quot;, &amp;quot;john@doe.com&amp;quot;];&lt;br /&gt;
$oauthClient = &amp;quot;some_client&amp;quot;;&lt;br /&gt;
$oauthSecret = &amp;quot;pn3g7pgpy36jtegj68j98t34kf6prtmb&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
if (!$authenticated &amp;amp;&amp;amp; isset($_GET['code'])) {&lt;br /&gt;
    $pars = [&lt;br /&gt;
        &amp;quot;grant_type&amp;quot; =&amp;gt; &amp;quot;authorization_code&amp;quot;,&lt;br /&gt;
        &amp;quot;client_id&amp;quot; =&amp;gt; $oauthClient,&lt;br /&gt;
        &amp;quot;client_secret&amp;quot; =&amp;gt; $oauthSecret,&lt;br /&gt;
        &amp;quot;code&amp;quot; =&amp;gt; $_GET['code'],&lt;br /&gt;
    ];&lt;br /&gt;
    $ch = curl_init($oauthTokenUrl);&lt;br /&gt;
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);&lt;br /&gt;
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($pars));&lt;br /&gt;
    $res = json_decode(curl_exec($ch));&lt;br /&gt;
    curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
    if(is_object($res) &amp;amp;&amp;amp; isset($res-&amp;gt;access_token)){&lt;br /&gt;
        $ch = curl_init($oauthUserUrl);&lt;br /&gt;
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);&lt;br /&gt;
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([&amp;quot;access_token&amp;quot; =&amp;gt; &amp;quot;Bearer &amp;quot; . $res-&amp;gt;access_token]));&lt;br /&gt;
        $res = json_decode(curl_exec($ch));&lt;br /&gt;
        curl_close($ch);&lt;br /&gt;
        $ex = explode(&amp;quot;,&amp;quot;, $oauthJsonPath);&lt;br /&gt;
        $current = $res;&lt;br /&gt;
&lt;br /&gt;
        foreach($ex as $p){&lt;br /&gt;
            if(!isset($current-&amp;gt;$p)) continue;&lt;br /&gt;
            $current = $current-&amp;gt;$p;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if(in_array($current, $oauthJsonValue)){&lt;br /&gt;
            $authenticated = true;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ($authenticated) {&lt;br /&gt;
    echo &amp;quot;Some protected content&amp;quot;;&lt;br /&gt;
} else {&lt;br /&gt;
    $ex = explode(&amp;quot;?&amp;quot;, $oauthAuthUrl);&lt;br /&gt;
    if(count($ex) == 2) parse_str($ex[1], $pars);&lt;br /&gt;
    else $pars = [];&lt;br /&gt;
    $pars[&amp;quot;client_id&amp;quot;] = $oauthClient;&lt;br /&gt;
    $pars[&amp;quot;state&amp;quot;] = &amp;quot;1&amp;quot;;&lt;br /&gt;
    $pars[&amp;quot;response_type&amp;quot;] = &amp;quot;code&amp;quot;;&lt;br /&gt;
    header('Location: ' . $ex[0] . &amp;quot;?&amp;quot; . http_build_query($pars));&lt;br /&gt;
    exit;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Richard Reiber</name></author>	</entry>

	</feed>