70 Commits

Author SHA1 Message Date
8cde02be4f
Allow reading JWT signing key from PEM-encoded PKCS8 file
All checks were successful
/ build (push) Successful in 2m21s
2025-05-07 14:30:19 +02:00
1d469c7346
Autofocus the custom principal field during developer authorization flow
All checks were successful
/ build (push) Successful in 2m13s
Simple change but very convenient.
2025-04-29 20:10:21 +02:00
20cd09737d
Include your own entitlements during custom authorization flow
All checks were successful
/ build (push) Successful in 2m35s
2025-04-28 16:27:40 +02:00
360119ad6a
Generate a client secret when a public client goes private
All checks were successful
/ build (push) Successful in 2m11s
This can also be used as a way to get a new client secret for a private client by switching to public and back.
2025-04-25 10:56:27 +02:00
18945e22bf
Support for user consent (#4)
All checks were successful
/ build (push) Successful in 1m45s
All clients will now require user consent.

Users with developer access can configure their clients to not require consent.
2025-04-25 10:21:16 +02:00
8307bc4906
Verify public clients are not issued refresh tokens
All checks were successful
/ build (push) Successful in 1m56s
2025-04-15 14:42:12 +02:00
3822f1229c
Change the OAuth 2 / OIDC endpoint URLs.
A decision was made to not deploy as a drop-in replacement but rather migrate applications to the new authorzitanion server.
This means it is no longer necessary to maintain backwards-compatible URLs and can instead use more "standard" URLs.
Not super-critical since they should be discovered via metadata but still nice that the URLs map closer to what the endpoint is called in the various specifications.
2025-04-15 14:32:56 +02:00
09f2fe9430
Change the default JTE templates to be pre-compiled and switch to development mode only in the "dev" profile.
This is done so that the default artifact produced my `mvnw package` works out of the box without explicitly changing to pre-compiled templates.
2025-04-15 13:50:40 +02:00
14f7ca66cb
Utilize X-Forwarded-* headers in embedded Docker container
All checks were successful
/ build (push) Successful in 1m58s
2025-04-08 22:48:57 +02:00
1a2a84f674
Immediately show authorization request errors before showing the custom authorization form
All checks were successful
/ build (push) Successful in 1m54s
2025-04-02 00:37:42 +02:00
857d59d391
Better error handling, especially during developer authorization 2025-04-02 00:16:52 +02:00
c421125eb4
Fix Shibboleth/Tomcat providing a principal with a blank name in the unauthenticated case
All checks were successful
/ build (push) Successful in 1m52s
2025-04-01 20:11:08 +02:00
71862afb55
Introduce a training run in the Docker build to speed it up
All checks were successful
/ build (push) Successful in 1m34s
See https://openjdk.org/jeps/483
2025-03-28 15:51:24 +01:00
c9559ca930
Edit clients
All checks were successful
/ build (push) Successful in 2m2s
2025-03-28 13:27:06 +01:00
a4f99f1b29
WAR file is never executed but rather deployed to an application server 2025-03-28 12:49:13 +01:00
9a6e21a396
Persist tokens between restarts
All checks were successful
/ build (push) Successful in 1m30s
Utilize Java serialization to turn the entire OAuth2Authorization to a binary blob and store that in the database. Could not find a better way to do it given the types involved (like Map<String, Object> properties). Sure, Java serialization can fail on arbitrary objects but hopefully since OAuth2Authorization implements java.io.Serializable any properties put in are serializable as well.
2025-03-28 11:58:35 +01:00
f0947c5ff8
Remove accidental port mapping
All checks were successful
/ build (push) Successful in 1m30s
2025-03-28 11:39:46 +01:00
0bb0cff7ca
Build on push
All checks were successful
/ build (push) Successful in 1m28s
2025-03-27 15:16:33 +01:00
2c6716865b
Allow setting custom entitlements 2025-03-27 15:03:45 +01:00
7fd46e88fe
Handle client redirect URI being null 2025-03-27 00:34:27 +01:00
9e8962c909
Migrate data from old authorization server
The new tables are prefixed with v2_ to allow simultaneous deployments
2025-03-26 18:53:13 +01:00
87d6bd594c Provide an embedded Docker container for local development (#1)
Allow developers to add this as a service to their Docker Compose file to enable local OAuth 2.0 flows.

See the following example:
```
services:
  oauth2:
    build: https://gitea.dsv.su.se/DMC/oauth2-authorization-server.git
    restart: unless-stopped
    ports:
      - "<host_port>:8080"
    environment:
      CLIENT_ID=awesome-app
      CLIENT_SECRET=p4ssw0rd
      CLIENT_REDIRECT_URI=http://localhost/oauth2/callback
```

Reviewed-on: #1
2025-03-26 18:51:20 +01:00
411bba57b2
Better description about the ways to verify tokens to let developer decide based on characteristics 2025-03-25 19:47:16 +01:00
464031bd17
Fix HTTP header name 2025-03-25 19:33:39 +01:00
bb8c0a2e60
General OAuth 2.0 documentation 2025-03-25 15:28:44 +01:00
becbcec39f
Upgrade Spring Boot version 2025-03-25 12:59:02 +01:00
245585c3d8
Add development instructions 2025-03-25 12:57:42 +01:00
fbca82d17e
Lower required Java version 2025-03-25 12:57:31 +01:00
a9f8f5bd53
Fix +x flag on mvnw 2025-03-25 12:44:32 +01:00
cefb4af44d
Include end user's entitlements (public information) in the access token 2025-03-24 23:05:27 +01:00
0d78322828
Move UserInfo endpoint for compatibility with old authorization server 2025-03-24 00:15:12 +01:00
54afb20c4d
Allow a persistent RSA key pair to be used for signing
Persistent as in it survives application restarts.
2025-03-22 17:47:32 +01:00
95ee6e77d7
Add and remove additional client owners 2025-03-22 16:45:35 +01:00
8578984e6e
Support resource servers using token introspection 2025-03-22 15:35:24 +01:00
ef56e5c4b5
Fix public client code flow 2025-03-22 13:31:26 +01:00
90218e988b
Improved navigation by adding a breadcrumb 2025-03-22 12:22:27 +01:00
71e82e0020
Display currently registered clients 2025-03-22 12:21:46 +01:00
68660f96a4
Register new clients
Error controller must handle all HTTP methods, not just GET. For example if getting an error on submitting a form.

All the test that previously excluded DataSourceConfiguration can no longer do so because of the ClientAdminController that requires a ClientManagementService whose implementation relies on a DataSource.
2025-03-22 11:55:49 +01:00
0f5a79f7b9
Fully populate all attributes as the fake user during development 2025-03-21 19:21:56 +01:00
90a104ca8c
Remove duplicate label/input names 2025-03-21 19:20:46 +01:00
83cb7dff7c
Improve developer experience when editing custom authorization template 2025-03-21 19:12:47 +01:00
18762df791
Extract base template for pages 2025-03-21 17:03:57 +01:00
d59f1ac057
Add custom flow HTML page 2025-03-21 16:37:42 +01:00
abd9207486
Improve validation of OAuth 2 authorization parameters in custom flow 2025-03-21 15:15:17 +01:00
5e6e5633d1
Fix authorization URL in custom flow 2025-03-21 15:15:15 +01:00
253161bd8e
Allow customizing the id token in the custom authorization flow 2025-03-21 15:15:14 +01:00
ae64f40048
dev profile allows custom authorization 2025-03-21 15:15:13 +01:00
b1cdb1200a
Let spring-boot-docker-compose automatically connect to the database 2025-03-21 15:15:11 +01:00
a7e51c303c
dev profile gives admin access 2025-03-21 15:15:10 +01:00
ef99fbcc02
Add email claims to id token if email scope is authorized 2025-03-21 15:15:08 +01:00