oidc-demo-app/README.md
Jan Dittberner 25b101afae Modernize demo application
- add linter config and fix golangci-lint warnings
- rename module to match new repository location
- use embedded resources for static assets, templates and translations
- recommend mkcert in README
- require at least Go 1.19
- update and tidy dependencies
- update copyright information
- improve Makefile, add lint and static asset targets
2023-07-29 17:46:33 +02:00

99 lines
2.3 KiB
Markdown

# Demo OpenID connect application
This repository contains a demo application using OAuth2/OpenID Connect to
authenticate and authorize users.
The code in this repository is licensed under the terms of the Apache License
Version 2.0.
Copyright © 2020-2023 Jan Dittberner
## Setup
### Certificates
You need a server certificate and corresponding private key to run `demo-app`.
An easy way to generate server certificate and key for local testing is
[`mkcert`](https://github.com/FiloSottile/mkcert/releases).
Run `mkcert` to generate `app.cacert.localhost.pem` and `app.cacert.localhost-key.pem`:
```shell
mkcert -cert-file app.cacert.localhost
```
### Configure the Demo Application
You will need a 32 byte and a 64 byte random secret for the session
authentication and encryption keys:
```
openssl rand -base64 64
openssl rand -base64 32
```
You also need the client id and the client secret, that have been generated
during the OIDC client setup described above.
Put the data into `resource_app.toml`:
```ini
[oidc]
client-id = "<client id from hydra clients invocation>"
client-secret = "<client secret from hydra clients invocation>"
[session]
auth-key = "<64 bytes of base64 encoded data>"
enc-key = "<32 bytes of base64 encoded data>"
```
## Start
Now you can start the demo application:
```shell
make
./demo-app
```
Visit https://app.cacert.localhost:4000/ in a Browser and you will be directed
through the OpenID connect authorization code flow.
## Translations
This application uses [go-i18n](https://github.com/nicksnyder/go-i18n/) for
internationalization (i18n) support.
The translation workflow needs the `go18n` binary which can be installed via
```
go install github.com/nicksnyder/go-i18n/v2/goi18n
```
To extract new messages from the code run
```shell
cd translations
goi18n extract ..
```
Then use
```shell
cd translations
goi18n merge active.*.toml
```
to create TOML files for translation as `translate.<locale>.toml`.
After translating the messages run
```shell
cd translations
goi18n merge active.*.toml translate.*.toml
```
to merge the messages back into the active translation files. To add a new
language you need to add the language code to the languages configuration
option (default is defined in the configmap in `services/configuration.go`).