Helix Core user and group provisioning
The advantage of Helix Core user and group provisioning is that users you create in your cloud service provider (such as Okta, Azure, OneLogin) can automatically be provisioned as Helix Core users. In addition, these users can authenticate with HAS.
This functionality is an implementation of the System for Cross-domain Identity Management (SCIM).
Provisioning is independent of HAS
Although we encourage customers using HAS to also take advantage of this service for user and group provisioning, it is optional and independent. That means:
-
you can use HAS with or without using this service for user and group provisioning
-
you can use this service for user and group provisioning with or without using HAS
Limitations
This implementation of SCIM does not support deprovisioning.
Any attempt by the cloud service provider to rename a user is rejected with a “mutability” error. Although the ALLOW_USER_RENAME setting can be set to true, renaming a user in Helix Core can have adverse effects.
Okta permits renaming a user, and removing the renamed user from Okta, but the renamed user remains active in HAS.
Configuring users and groups
Prerequisites
Make sure that the HAS service is visible on the public internet so that the cloud service provider can connect to it. |
Configure P4TRUST and P4TICKETS
|
Configuration steps
-
In your cloud service provider:
-
Make sure that you have Helix Core groups. The most basic arrangement is a group for Helix Core administrators and a group of regular users, but you can have any number of groups and control access in many ways. See Setting protections with p4 protect in Helix Core Server Administrator Guide.
-
Create Helix Core users and assign them to the appropriate Helix Core groups.
-
Assign passwords to the users, and best practice is to tell the users to change their password upon login.
-
-
Edit the
.env
file you use for Configuring to include the following settings:-
BEARER_TOKEN='your-password-to-HAS'
-
P4PORT=192.168.1.3:1666
with the IP address and port number to connect to the Helix Core server. -
P4USER=super
This is the user withsuper
Permission levels and access rights to the Helix Core server. -
P4PASSWD=password-or-ticket-for-P4USER
NoteSome cloud server providers might require the
BEARER_TOKEN
value to be encoded in base64 format, which you can do at https://www.base64encode.org/ -
-
In the form for configuring the cloud service provider's provisioning feature, provide:
-
the URL of the HAS service with
/scim/v2
appended as a suffix. For example:https://has.example.com/scim/v2
-
the
BEARER_TOKEN
you configured in Step 2.
-
You can now create Helix Core groups and users with the provisioning service of your cloud service provider.
This provisioning service follows the standard of System for Cross-domain Identity Management (SCIM) to automate the following Helix Core commands:
-
p4 group
to create groups, change the users in a group, and delete groups -
p4 user
to create and delete users
You can set user passwords in your Helix Core client, or set user passwords in your cloud service provider. If you set user passwords in your cloud service provider, the HAS-based provisioning sets those same user passwords in the Helix Core server. Similarly, you can find out through your cloud service provider the list of Helix Core users and groups.
If you use the HAS-based provisioning service to assign a user or a group to HAS (and/or HAS-based provisioning), you are responsible for setting the appropriate Helix Core protections (see p4 protect in Helix Core Command-Line (P4) Reference).
Similarly, you are responsible for making sure the groups and users in your Helix Core server and your cloud service provider are sync with each other. The cloud service provider might be able to do a sync and discover any groups or users created directly in Helix Core, but the Helix Core server cannot query the cloud service provider.
How to re-activative a user
If you make a user inactive, that user is logged out and that user's password loses validity.
Suppose you want to restore that user as an active user:
-
If the user authenticates with SSO, enable the user within the cloud service provider, such as Azure AD
-
If that user has a Helix Core Server password:
-
reset the password in the cloud service provider's provisioning feature
-
If the cloud service provider is not managing user passwords, reset the password with the Helix Core Server p4 passwd command
-
Multiple Helix Core servers
If you want to allow one HAS instance to connect to multiple Helix Core servers, configure the provisioning
setting for each server. This example shows two servers, one in the United States (p4port = "ssl:chicago:1666"
) and one in Japan (p4port = "ssl:tokyo:1666"
).
[provisioning] [[provisioning.providers]] bearer_token_file = "feline-token.txt" domain = "feline" [[provisioning.providers]] bearer_token_file = "canine-token.txt" domain = "canine" [[provisioning.servers]] p4port = "ssl:chicago:1666" p4user = "super" p4passwd = "2E7092CC2CA6BCAC74EB364BF4C4AD99" domains = [ "feline", "canine" ] leader = [ "canine" ] [[provisioning.servers]] p4port = "ssl:tokyo:1666" p4user = "super" p4passwd = "C8478F3F32B62A84731ADDB5A2443E68" domains = [ "canine" ]
where:
-
Each Cloud service provider is defined in its own provider section.
-
Incoming requests are assigned to a domain based on the bearer token that is used by the client.
-
Each Helix Core Server instance is defined in its own
[[provisioning.servers]]
section and each server can belong to one or domains.
The configuration example above uses the TOML file format for HAS.
Constraints:
-
Each provider must have its own
bearer_token_file
-
If multiple servers are assigned to a particular domain, exactly one of them must have that domain listed in their
leader
list. In this example, the server associated with Chicago is the leader. -
Each
domain
name must be unique. The name can contain letters and numerals. Except for underscores, no special characters or blank spaces are allowed in domain names.