Use AWS
Applications
People sign in to your own applications with Shonin, as they open the AWS console: one sign-in, with their second factor. Shonin only says who the person is (OpenID Connect). What they may do inside the application stays in the application.
The ID tokens are signed by the installation of your AWS organization, with its KMS key, never by Shonin. The application checks them against the keys the installation publishes. So applications need an AWS organization connected to your Shonin org.
#Add an application
A primary admin adds it in Org settings, panel Applications: enter the client ID of the application and choose Add application. The client ID is the https address of the application's client ID metadata document (see below): Shonin reads the name and the redirect addresses from there. Nothing else to register. Only the applications in this list can sign people in, and only to the redirect addresses of their document. Every change is in the Event log.
To stop an application, choose Remove next to it: it can no longer sign anyone in.
#Give it to people
On the Applications tab, panel Who has each application, an administrator chooses a person or a group and Assign, as for a permission set on an account. Only people who have the application, directly or through a group, can sign in to it. Remove takes it away.
Everyone sees the applications assigned to them on the Applications tab, next to AWS, and opens one with Open. The tabs appear once there is something to show: for administrators when the Shonin org has an application, for everyone else when one is assigned to them.
#For the developers of the application
Configure the application as an OpenID Connect relying party:
- Issuer: the address shown in Org settings → Applications. It is the installation of your AWS organization (
https://<id>.cloudfront.net): discovery at/.well-known/openid-configuration, keys at/jwks.json. The sign-in and token endpoints are onhttps://<your Shonin org>.app.shonin.ai/oidc. - Client ID: the https address of a JSON document you publish, with the same address in
client_id:
{
"client_id": "https://app.example.com/oauth/client.json",
"client_name": "Example app",
"redirect_uris": ["https://app.example.com/callback"],
"application_type": "web",
"token_endpoint_auth_method": "none",
"initiate_login_uri": "https://app.example.com/login"
}- Flow: authorization code with PKCE (
S256), no client secret. Scopesopenid,email,profile. - ID token: RS256, valid 5 minutes, with
sub(stable: use it to recognize the person),email,email_verified,nameandgiven_name. No refresh tokens and no userinfo endpoint: the ID token has everything. - Open: with
initiate_login_uriin the document, Open goes there with the issuer iniss, and the application starts the sign-in. Without it, Open goes to itsclient_uri, or to the site of its first redirect URI.