From 240fb5f97f6dda132520f31709d71a72dad296c7 Mon Sep 17 00:00:00 2001 From: Stephan Richter <s.richter@srsoftware.de> Date: Sun, 20 Oct 2024 20:35:11 +0200 Subject: [PATCH 1/6] gui improvements Signed-off-by: Stephan Richter <s.richter@srsoftware.de> --- .../src/main/resources/de/authorization.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/de.srsoftware.oidc.web/src/main/resources/de/authorization.html b/de.srsoftware.oidc.web/src/main/resources/de/authorization.html index 0533750..a6a1e3e 100644 --- a/de.srsoftware.oidc.web/src/main/resources/de/authorization.html +++ b/de.srsoftware.oidc.web/src/main/resources/de/authorization.html @@ -11,16 +11,16 @@ <body> <nav></nav> <div id="content" style="display: none"> - Eine vertrauende Seite, <span id="rp">unknown</span>, hat Zugriff auf die folgenden Informationen erfragt: + <p>Eine vertrauende Seite, <span id="rp">unknown</span>, hat Zugriff auf die folgenden Informationen erfragt:</p> <ul id="scopes"> </ul> - Stimmen Sie zu, diese Informationen mit <span id="rp2">unknown</span> zu teilen? + <p>Stimmen Sie zu, diese Informationen mit <span id="rp2">unknown</span> zu teilen?</p> <button type="button" onclick="grantAutorization(1)">Ja - für einen Tag</button> <button type="button" onclick="grantAutorization(7)">Ja - für eine Woche</button> <button type="button" onclick="grantAutorization(30)">Ja - für einen Monat</button> <button type="button" onclick="grantAutorization(365)">Ja - für ein Jahr</button> - <button type="button" onclick="denyAutorization()">No</button> + <button type="button" onclick="denyAutorization()">Nein</button> </div> <div id="error_missing_parameter" class="error" style="display: none"> Request enthält den benötigten Parameter "<span id="parameter"></span>" nicht! From 2fbb9803fb2d4cf83b0b2bcbbd5caed869e59434 Mon Sep 17 00:00:00 2001 From: Stephan Richter <s.richter@srsoftware.de> Date: Sun, 20 Oct 2024 20:45:39 +0200 Subject: [PATCH 2/6] extended translations Signed-off-by: Stephan Richter <s.richter@srsoftware.de> --- de.srsoftware.oidc.web/src/main/resources/de/scopes/email.html | 1 + de.srsoftware.oidc.web/src/main/resources/de/scopes/openid.html | 1 + de.srsoftware.oidc.web/src/main/resources/de/scopes/profile.html | 1 + de.srsoftware.oidc.web/src/main/resources/en/scopes/profile.html | 1 + 4 files changed, 4 insertions(+) create mode 100644 de.srsoftware.oidc.web/src/main/resources/de/scopes/email.html create mode 100644 de.srsoftware.oidc.web/src/main/resources/de/scopes/openid.html create mode 100644 de.srsoftware.oidc.web/src/main/resources/de/scopes/profile.html create mode 100644 de.srsoftware.oidc.web/src/main/resources/en/scopes/profile.html diff --git a/de.srsoftware.oidc.web/src/main/resources/de/scopes/email.html b/de.srsoftware.oidc.web/src/main/resources/de/scopes/email.html new file mode 100644 index 0000000..d905564 --- /dev/null +++ b/de.srsoftware.oidc.web/src/main/resources/de/scopes/email.html @@ -0,0 +1 @@ +<li>Ihre Email-Adresse</li> \ No newline at end of file diff --git a/de.srsoftware.oidc.web/src/main/resources/de/scopes/openid.html b/de.srsoftware.oidc.web/src/main/resources/de/scopes/openid.html new file mode 100644 index 0000000..6c29a88 --- /dev/null +++ b/de.srsoftware.oidc.web/src/main/resources/de/scopes/openid.html @@ -0,0 +1 @@ +<li>Ihre OpenID – damit wirst du bei der vertrauenden Website identifiziert</li> \ No newline at end of file diff --git a/de.srsoftware.oidc.web/src/main/resources/de/scopes/profile.html b/de.srsoftware.oidc.web/src/main/resources/de/scopes/profile.html new file mode 100644 index 0000000..4122b66 --- /dev/null +++ b/de.srsoftware.oidc.web/src/main/resources/de/scopes/profile.html @@ -0,0 +1 @@ +<li>Zugriff auf Ihren Klar-Namen</li> \ No newline at end of file diff --git a/de.srsoftware.oidc.web/src/main/resources/en/scopes/profile.html b/de.srsoftware.oidc.web/src/main/resources/en/scopes/profile.html new file mode 100644 index 0000000..0f54bba --- /dev/null +++ b/de.srsoftware.oidc.web/src/main/resources/en/scopes/profile.html @@ -0,0 +1 @@ +<li>Access your display name</li> \ No newline at end of file From 7da96e98b0bf59d0cfed7f455c4c2c27db3b679e Mon Sep 17 00:00:00 2001 From: Stephan Richter <s.richter@srsoftware.de> Date: Sun, 20 Oct 2024 21:59:18 +0200 Subject: [PATCH 3/6] implemented sending media type on token request (and others) Signed-off-by: Stephan Richter <s.richter@srsoftware.de> --- .../src/main/java/de/srsoftware/http/PathHandler.java | 1 + .../src/main/java/de/srsoftware/oidc/backend/UserController.java | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/de.srsoftware.http/src/main/java/de/srsoftware/http/PathHandler.java b/de.srsoftware.http/src/main/java/de/srsoftware/http/PathHandler.java index 6c3afc0..f1d5bb9 100644 --- a/de.srsoftware.http/src/main/java/de/srsoftware/http/PathHandler.java +++ b/de.srsoftware.http/src/main/java/de/srsoftware/http/PathHandler.java @@ -178,6 +178,7 @@ public abstract class PathHandler implements HttpHandler { if (o instanceof List<?> list) o = new JSONArray(list); if (o instanceof Map<?, ?> map) o = new JSONObject(map); if (o instanceof Error<?> error) o = error.json(); + if (o instanceof JSONObject) ex.getResponseHeaders().add(CONTENT_TYPE, JSON); return sendContent(ex, status, o.toString().getBytes(UTF_8)); } diff --git a/de.srsoftware.oidc.backend/src/main/java/de/srsoftware/oidc/backend/UserController.java b/de.srsoftware.oidc.backend/src/main/java/de/srsoftware/oidc/backend/UserController.java index f915fe8..52e945a 100644 --- a/de.srsoftware.oidc.backend/src/main/java/de/srsoftware/oidc/backend/UserController.java +++ b/de.srsoftware.oidc.backend/src/main/java/de/srsoftware/oidc/backend/UserController.java @@ -21,7 +21,6 @@ import jakarta.mail.*; import jakarta.mail.internet.*; import java.io.IOException; import java.time.Duration; -import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.Set; From 414d943bb2ada73f15e63db1dd3b05205f4ce231 Mon Sep 17 00:00:00 2001 From: Stephan Richter <s.richter@srsoftware.de> Date: Mon, 21 Oct 2024 12:08:10 +0200 Subject: [PATCH 4/6] GUI improvements Signed-off-by: Stephan Richter <s.richter@srsoftware.de> --- .../src/main/resources/de/authorization.html | 26 ++++++------------- .../src/main/resources/en/authorization.html | 22 +++++----------- 2 files changed, 14 insertions(+), 34 deletions(-) diff --git a/de.srsoftware.oidc.web/src/main/resources/de/authorization.html b/de.srsoftware.oidc.web/src/main/resources/de/authorization.html index a6a1e3e..bbdafd1 100644 --- a/de.srsoftware.oidc.web/src/main/resources/de/authorization.html +++ b/de.srsoftware.oidc.web/src/main/resources/de/authorization.html @@ -11,32 +11,22 @@ <body> <nav></nav> <div id="content" style="display: none"> - <p>Eine vertrauende Seite, <span id="rp">unknown</span>, hat Zugriff auf die folgenden Informationen erfragt:</p> + <p>Eine vertrauende Seite, <span id="rp">unbekannt</span>, hat Zugriff auf die folgenden Informationen erfragt:</p> <ul id="scopes"> </ul> - <p>Stimmen Sie zu, diese Informationen mit <span id="rp2">unknown</span> zu teilen?</p> + <p>Stimmen Sie zu, diese Informationen mit <span id="rp2">unbekannt</span> zu teilen?</p> <button type="button" onclick="grantAutorization(1)">Ja - für einen Tag</button> <button type="button" onclick="grantAutorization(7)">Ja - für eine Woche</button> <button type="button" onclick="grantAutorization(30)">Ja - für einen Monat</button> <button type="button" onclick="grantAutorization(365)">Ja - für ein Jahr</button> <button type="button" onclick="denyAutorization()">Nein</button> </div> - <div id="error_missing_parameter" class="error" style="display: none"> - Request enthält den benötigten Parameter "<span id="parameter"></span>" nicht! - </div> - <div id="error_unknown_client" class="error" style="display: none"> - Client "<span id="client_id"></span>" ist dem Backend nicht bekannt! - </div> - <div id="error_unsupported_response_type" class="error" style="display: none"> - Rückgabe-Typ "<span id="response_type"></span>" wird nicht unterstützt! - </div> - <div id="error_missing_code" class="error"> - Fehlender Rückgabe-Typ: code - </div> - <div id="error_invalid_redirect" class="error" style="display: none"> - Ungültige Umleitung: <span id="redirect_uri"></span> - </div> - <div id="missing_scopes" class="error" style="display: none">Authorisierungs-Quelle lieferte weder eine Liste von <em>nicht-autorisierten Scopes</em> noch eine Liste von <em>authorisierten Scopes</em>! Das ist ein Server-Fehler.</div> + <div class="error" style="display: none" id="error_missing_parameter">Request enthält den benötigten Parameter "<span id="parameter"></span>" nicht!</div> + <div class="error" style="display: none" id="error_unknown_client">Client "<span id="client_id"></span>" ist dem Backend nicht bekannt!</div> + <div class="error" style="display: none" id="error_unsupported_response_type">Rückgabe-Typ "<span id="response_type"></span>" wird nicht unterstützt!</div> + <div class="error" style="display: none" id="error_missing_code">Fehlender Rückgabe-Typ: code</div> + <div class="error" style="display: none" id="error_invalid_redirect">Ungültige Umleitung: <span id="redirect_uri"></span></div> + <div class="error" style="display: none" id="missing_scopes">Authorisierungs-Quelle lieferte weder eine Liste von <em>nicht-autorisierten Scopes</em> noch eine Liste von <em>authorisierten Scopes</em>! Das ist ein Server-Fehler.</div> </body> </html> \ No newline at end of file diff --git a/de.srsoftware.oidc.web/src/main/resources/en/authorization.html b/de.srsoftware.oidc.web/src/main/resources/en/authorization.html index b8b29a1..623031f 100644 --- a/de.srsoftware.oidc.web/src/main/resources/en/authorization.html +++ b/de.srsoftware.oidc.web/src/main/resources/en/authorization.html @@ -22,21 +22,11 @@ <button type="button" onclick="grantAutorization(365)">Yes - for 1 year</button> <button type="button" onclick="denyAutorization()">No</button> </div> - <div id="error_missing_parameter" class="error" style="display: none"> - Request does not contain required parameter "<span id="parameter"></span>"! - </div> - <div id="error_unknown_client" class="error" style="display: none"> - Client "<span id="client_id"></span>" unknown to backend! - </div> - <div id="error_unsupported_response_type" class="error" style="display: none"> - Response type "<span id="response_type"></span>" not supported! - </div> - <div id="error_missing_code" class="error"> - Missing response type: code - </div> - <div id="error_invalid_redirect" class="error" style="display: none"> - invalid redirect: <span id="redirect_uri"></span> - </div> - <div id="missing_scopes" class="error" style="display: none">Authorization resource contained neither list of <em>unauthorized scopes</em> nor list of <em>authorized scopes</em>! This is a server problem.</div> + <div class="error" style="display: none" id="error_missing_parameter">Request does not contain required parameter "<span id="parameter"></span>"!</div> + <div class="error" style="display: none" id="error_unknown_client">Client "<span id="client_id"></span>" unknown to backend!</div> + <div class="error" style="display: none" id="error_unsupported_response_type">Response type "<span id="response_type"></span>" not supported!</div> + <div class="error" style="display: none" id="error_missing_code">Missing response type: code</div> + <div class="error" style="display: none" id="error_invalid_redirect">invalid redirect: <span id="redirect_uri"></span></div> + <div class="error" style="display: none" id="missing_scopes">Authorization resource contained neither list of <em>unauthorized scopes</em> nor list of <em>authorized scopes</em>! This is a server problem.</div> </body> </html> \ No newline at end of file From 3b6e951ccdca83665b834930565b237fe1fc27ae Mon Sep 17 00:00:00 2001 From: Stephan Richter <s.richter@srsoftware.de> Date: Mon, 21 Oct 2024 23:04:01 +0200 Subject: [PATCH 5/6] improving clients page Signed-off-by: Stephan Richter <s.richter@srsoftware.de> --- .../main/java/de/srsoftware/oidc/datastore/file/FileStore.java | 2 +- de.srsoftware.oidc.web/src/main/resources/en/scripts/clients.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/de.srsoftware.oidc.datastore.file/src/main/java/de/srsoftware/oidc/datastore/file/FileStore.java b/de.srsoftware.oidc.datastore.file/src/main/java/de/srsoftware/oidc/datastore/file/FileStore.java index 8e2ba9e..1348ef9 100644 --- a/de.srsoftware.oidc.datastore.file/src/main/java/de/srsoftware/oidc/datastore/file/FileStore.java +++ b/de.srsoftware.oidc.datastore.file/src/main/java/de/srsoftware/oidc/datastore/file/FileStore.java @@ -84,7 +84,7 @@ public class FileStore implements AuthorizationService, ClientService, SessionSe client.remove(scope); } } - if (client.isEmpty()) clients.remove(clientId); + // if (client.isEmpty()) clients.remove(clientId); // keep client as mark for ClientController.dash } if (clients.isEmpty()) authorizations.remove(userId); } diff --git a/de.srsoftware.oidc.web/src/main/resources/en/scripts/clients.js b/de.srsoftware.oidc.web/src/main/resources/en/scripts/clients.js index 1739337..46b08eb 100644 --- a/de.srsoftware.oidc.web/src/main/resources/en/scripts/clients.js +++ b/de.srsoftware.oidc.web/src/main/resources/en/scripts/clients.js @@ -28,7 +28,7 @@ function handleClients(response){ } function link(url){ - return url ? '<a href="'+url+'">'+url.split('?')[0]+'</a>': ""; + return url ? '<a href="'+url+'" target="_blank">'+url.split('?')[0]+'</a>': ""; } function handleRemove(response){ From 44d7dfe2675560ea5163a653b9331daf32405219 Mon Sep 17 00:00:00 2001 From: Stephan Richter <s.richter@srsoftware.de> Date: Tue, 22 Oct 2024 08:52:00 +0200 Subject: [PATCH 6/6] updated todo Signed-off-by: Stephan Richter <s.richter@srsoftware.de> --- de.srsoftware.oidc.web/src/main/resources/en/todo.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/de.srsoftware.oidc.web/src/main/resources/en/todo.html b/de.srsoftware.oidc.web/src/main/resources/en/todo.html index 1473642..51782d2 100644 --- a/de.srsoftware.oidc.web/src/main/resources/en/todo.html +++ b/de.srsoftware.oidc.web/src/main/resources/en/todo.html @@ -13,8 +13,9 @@ <div id="content"> <h1>to do…</h1> <ul> - <li>implement token refresh</li> - <li>Configuration im Frontend</li> + <li>implement token refresh</li> + <li>Configuration im Frontend</li> + <li>TOTP authentifizierung</li> </ul> </div> </body>