NetID Activate is a Go web app that provides controlled account invitation and account activation via web portal. It acts as a companion to Red Hat Identity Management (Red Hat IdM) / FreeIPA.
It enables users to add accounts to a Red Hat IdM domain without needing view ACI, trusting the IdM integrated root certificate on browsers, or installing IdM with external CA as the root CA.
NetID Activate can be installed separately from Red Hat IdM and does not have run on a domain joined host. All calls to IdM are over the JSON-RPC API.
Here is what the web portal looks like:
- OpenID Connect authentication for users inviting new users
- Email based one time code for invited users
- Username selection from several options, options are removed if already used in IdM
- First name + last name
- First name three letters + last name
- First name two letters + last name
- First name + last name two letters
- First initial + last name + number
- Multiple default groups for invited users
- If the invited email is present in IdM, the inviter is notified that the account exists
- GECOS set to display name or
First Last (<Country Alpha3> <Affiliation>)
NetID Activate requires an account under cn=users,cn=accounts to authenticate
and use the IdM JSON-RPC API. A LDAP only service account does not work.
It is recommended that the account have a complex password policy, and assigned a role with custom limited permissions instead of admin. The following permissions are needed:
- Type: User
- Rights: add
- Effective attributes: gecos, pager, loginshell, givenname, manager, st, userpassword, cn, initials, sn, displayname, mail
For each group add the system account to the member managers
The default system permission
The system permission
Make a copy of NETID.example.yaml to ./NETID.yaml or ./data/NETID.yaml
SESSION_KEY: Set the 32 byte cookie secret key. eg openssl rand -base64 32 | head -c 32; echo
SESSION_AGE: Optional, defaults to access token lifespan. Set the maximum age of a session before the user must reauthenticate
SERVER_PORT: What port on localhost Go should listen to
SERVER_HOSTNAME: Used in emails and OpenID Connect
OIDC_SERVER_PORT: What port OpenID Connect redirect to and what users use
OIDC_WELL_KNOWN: URI of well-known endpoint
CLIENT_ID: Client ID
CLIENT_SECRET: Client secret
SCOPES: OIDC Scopes
DB_PATH: Relative path to db
LOGO_URL: Fully qualified URI to image
FAVICON_URL: Fully qualified URI to favicon
SITE_NAME: Shown in emails and header
TENANT_NAME: Name of IdM directory, shown in emails
AFFILIATION: JSON list, added to GECOS
LOGIN_REDIRECT: Shown to users after successful account activation
LINK_SERVICE_PROVIDER: Shown in email footer
LINK_PRIVACY_POLICY: Shown in email footer
EMAIL_FROM: Name and address
AWS_REGION: AWS
AWS_ACCESS_KEY_ID: SES Credentials
AWS_SECRET_ACCESS_KEY: SES Credentials
CACERT_PATH: Absolute path to CAIDM_HOST: FQDN of IdM hostIDM_USERNAME: IdM UsernameIDM_PASSWORD: IdM PasswordIDM_ADD_GROUP: Comma separated groups to add all new users to (no spaces)IDM_GECOS: If set totruewill add country and affiliation to GECOSOPTIONAL_GROUPS: YAML list of optional groups to add users to, selectable by inviter.group_requiredlist of user groups that are allowed to add invitees, use""for all inviters to use- If
memberManageris set totruethen LDAP attributememberManagerwill be use to determine if the inviter can add the invitee to the group. Does supportmembermanager_group. - If
memberManageris set totrue, the value ofgroup_requiredis ignored
NetID Activate is distributed under GNU Affero General Public License v3.0.




