gafaelfawr¶
Edit on GitHub | /services/gafaelfawr |
Type | Helm |
Namespace | gafaelfawr |
Overview
Gafaelfawr provides authentication and identity management services for the Rubin Science Platform.
It is primarily used as an NGINX auth_request
handler configured via annotations on the Ingress
resources of Science Platform services.
In that role, it requires a user have the required access scope to use that service, rejects users who do not have that scope, and redirects users who are not authenticated to the authentication process.
Gafaelfawr supports authentication via either OpenID Connect (generally through CILogon) or GitHub.
For more information, see the Gafaelfawr documentation.
Debugging
If a user successfully authenticates through the Gafaelfawr /login
route but then cannot access a service such as the Notebook or Portal Aspects, a good initial debugging step is to look at the contents of the user’s token.
Have the user go to /auth/analyze
, which will provide a JSON dump of their authentication information.
This will include their secret token, so be aware that sharing the full contents of that page will allow someone else to impersonate that user.
The important information is in the token.data
portion of the JSON document.
The key information to look at is the isMemberOf
claim, which shows the groups of which Gafaelfawr thinks the user is a member, and the scope
claim, which shows how those group memberships were translated into access scopes using the group_mappings
configuration.
This is usually the best tool for uncovering problems with group mapping.
For other issues, looking at the pod logs for the gafaelfawr
pod in the gafaelfawr
namespace is the best next step.
(The actual pod name will have a random string appended to gafaelfawr
.
The pod of interest is the one that is not the Redis pod.)
kubectl logs <pod> -n gafaelfawr --timestamp
or the Argo CD pod logs screen will show you the messages from Gafaelfawr, including any errors.
The logs from Gafaelfawr are in JSON format.