-
Notifications
You must be signed in to change notification settings - Fork 1
Single Sign On
wjehring edited this page Dec 19, 2022
·
11 revisions
Standard
Users do not wish to manage and use multiple credentials when navigating data held in disparate systems. At the same time, these systems must only provide access to authenticated and authorised users.
Inline
SIDeR organisations implement SSO server using Keycloak to abstract multiple local solutions e.g. AD.
Token is a JWT.
A client can retrieve a token via a URL redirect following the implicit grant pattern.
- The client checks for existing SSO sessions in the browser. If a session is found, the client will use the corresponding token to authenticate against external web services (e.g. Warden).
- a) If no session is found, the client presents the user with identity provider options (e.g. login using Black Pear Auth, login using SIDeR). On selection of an identity provider, the client will redirect the browser to the identity provider's login page.
b) If there is an issuer hint in the URL using the auth-redirect page and the
iss
parameter e.g.https://pyrusapps.blackpear.com/esp/#!/auth-redirect?iss=https://sso.tst.nhs.uk/auth/realms/SIDER
and the issuer is recognised by the application, the application will automatically redirect the browser to the identity provider's login page. - On successful login, the identity provider will redirect the browser back to the client's URL with an access token in the URL. This token will be used to authenticate against external web services.
The requestor may provide an authentication token within a url:
https://pyrusapps.blackpear.com/esp/#!/launch?access_token=<jwt_token>
The requestor must provide an authentication token in an http header.
- The endpoint must reject any requests without an authentication token (401).
- The endpoint must reject any requests with an invalid authentication token (401).
- The endpoint must reject any requests where the authentication token does not provide authorisation to execute the request (403).
- The token should be provided on the
Authorization
request header i.e.Authorization: Bearer <jwt_token>
.