Compare commits

..

7 Commits
v1.5 ... main

4 changed files with 58 additions and 43 deletions

View File

@ -6,16 +6,34 @@ Ergebnis als `.jar`-Datei im Verzeichnis `sourcecode/target`
# Provider-Plugin in keycloak installieren # Provider-Plugin in keycloak installieren
- `.jar`-Datei in Ordner `/opt/keycloak/.../providers/` platzieren - `.jar`-Datei (entweder wie oben beschrieben neu kompiliert oder hier im git unter dem Reiter "releases" downloadbar) im Ordner `/opt/keycloak/.../providers/` platzieren
- Inhalt von Ordner "Theme" in Ordner `/opt/keycloak/.../themes/` platzieren - Inhalt von Ordner "theme" (also der gesamte Ordner "gmp") in Ordner `/opt/keycloak/.../themes/` platzieren
- Theme "gmp" in Keycloak unter "Realm Settings" > "Themes" > "Login Theme" auswählen - Theme "gmp" in Keycloak unter "Realm Settings" > "Themes" > "Login Theme" auswählen
Keycloak neu starten: In einer keycloak-Konfigurationsdatei ist noch zu prüfen...
`sudo nano /opt/keycloak/sso.srv1.gmpvintern.de/conf/keycloak.env`
In einer Zeile muss stehen
`KC_PROXY_HEADERS=xforwarded` - **nicht "forwarded"** (ohne x davor)
Keycloak neu starten (Testserver):
``` ```
systemctl stop sso.test.gmpvintern.de.service systemctl stop sso.test.gmpvintern.de.service
systemctl start sso.test.gmpvintern.de.service systemctl start sso.test.gmpvintern.de.service
``` ```
Keycloak neu starten (Echt-Server):
```
systemctl stop sso.srv1.gmpvintern.de.service
systemctl start sso.srv1.gmpvintern.de.service
```
- Menü "Authentifizierung" (linke Spalte) und den Ablauf "browser" öffnen
- Rechts oben "Aktion" > "Duplizieren"
- Speichern unter dem Namen "browser-ip"
- Ausführung hinzufügen "Login per IP" und hinter "Cookie" setzen. Anforderung => Alternative
- Rechts oben "Aktion" > "Ablauf verknüpfen" als "Browser flow"
# Plugin nutzen # Plugin nutzen
- Benutzeraccount, bei welchem man sich mit einem Klick einloggen kann in keycloak-Admin-Interface bearbeiten - Benutzeraccount, bei welchem man sich mit einem Klick einloggen kann in keycloak-Admin-Interface bearbeiten
- Zu Reiter "Attributes" wechseln - Zu Reiter "Attributes" wechseln
@ -24,3 +42,7 @@ systemctl start sso.test.gmpvintern.de.service
- key: `ipAddresses` value: `<ip>` - key: `ipAddresses` value: `<ip>`
Es können beliebig viele Attribute mit dem key `ipAddresses` hinzugefügt werden, da die Feldlänge für die value nur sehr begrenzt ist. Es können beliebig viele Attribute mit dem key `ipAddresses` hinzugefügt werden, da die Feldlänge für die value nur sehr begrenzt ist.
value kann nur eine IP-Adresse (127.0.0.1) sein oder ein Bereich (127.0.0.1-127.0.0.10) oder mehrere Komma-Separiert (127.0.0.1,192.168.178.2) value kann nur eine IP-Adresse (127.0.0.1) sein oder ein Bereich (127.0.0.1-127.0.0.10) oder mehrere Komma-Separiert (127.0.0.1,192.168.178.2)
**Reiter "Attributes" wird nicht angezeigt?**
In den Realm-Einstellungen, Reiter "Allgemein" recht weit unten "Nicht verwaltete Attribute" aktivieren.

View File

@ -0,0 +1,14 @@
<#import "template.ftl" as layout>
<@layout.registrationLayout; section>
<#if section = "title">Anmeldung bestätigen</#if>
<#if section = "form">
<form id="kc-form" class="form-group" action="${url.loginAction}" method="post">
<h3>Hallo ${user.username!}, willkommen zurück!</h3>
<p>Ihre IP-Adresse wurde erkannt. Bitte bestätigen Sie Ihre Anmeldung.</p>
<div class="form-group">
<input type="submit" class="btn btn-primary btn-block" value="Anmeldung abschließen" />
</div>
</form>
</#if>
</@layout.registrationLayout>

View File

@ -0,0 +1,18 @@
<#import "template.ftl" as layout>
<@layout.registrationLayout; section>
<#if section = "title">${ipLoginTitle}</#if>
<#if section = "form">
<form id="kc-form" class="form-group" action="${url.loginAction}" method="post">
<h3>${msg("ipLoginIPfound")} '${user.username!}'.</h3>
<p>${msg("ipLoginDetectedInfo")}</p>
<p>${msg("ipLoginDetectedInfo2")}</p>
<div id="kc-form-buttons" class="form-group">
<input type="submit" class="btn btn-primary btn-block" value='${msg("ipLoginSubmitButton")}'/>
</div>
</form>
<hr/>
</#if>
</@layout.registrationLayout>

View File

@ -1,39 +0,0 @@
<#import "template.ftl" as layout>
<@layout.registrationLayout; section>
<#if section = "form">
<#if ipLogin?? && ipLogin>
<div>
<div>
<p>Sie können sich direkt ohne Passwort anmelden.</p>
<div class="form-group">
<form id="ipLoginForm" action="${url.loginAction}" method="post">
<input type="hidden" name="ipLogin" value="true">
<input type="submit" class="btn btn-primary btn-block" name="submit-ip-login" value="Per IP einloggen" />
</form>
</div>
<hr/>
<p style="text-align: center;">Oder melden Sie sich mit einem anderen Konto an:</p>
</div>
</div>
</#if>
<form id="loginForm" class="form-group" action="${url.loginAction}" method="post">
<div class="form-group">
<label for="username" class="form-label">${msg("usernameOrEmail")}</label>
<input type="text" name="username" value="${(login.username)!''}" id="username" class="form-control" required autofocus autocomplete="off">
</div>
<div class="form-group">
<label for="password" class="form-label">${msg("password")}</label>
<input type="password" name="password" id="password" class="form-control" required autocomplete="off">
</div>
<div class="form-group">
<input class="btn btn-primary btn-block" name="login" id="kc-login" type="submit" value="${msg("doLogIn")}"/>
</div>
</form>
</#if>
</@layout.registrationLayout>