Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d49c1a4d59 | |||
| 47cb48db1b | |||
| 56228ac5d9 | |||
| b2c130b502 | |||
| a39bd1b1f3 | |||
| 4b24214d75 | |||
| 04d3b9a7bd |
28
Readme.md
28
Readme.md
@ -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.
|
||||||
|
|||||||
14
theme/gmp/login/ip-login-form.ftl
Normal file
14
theme/gmp/login/ip-login-form.ftl
Normal 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>
|
||||||
18
theme/gmp/login/ip-login-page.ftl
Normal file
18
theme/gmp/login/ip-login-page.ftl
Normal 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>
|
||||||
@ -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>
|
|
||||||
Loading…
x
Reference in New Issue
Block a user