SAML Support; user groups; External IDP-authoritative entitlements#3998
Open
timfrazee wants to merge 67 commits intodocker/digital-oceanfrom
Open
SAML Support; user groups; External IDP-authoritative entitlements#3998timfrazee wants to merge 67 commits intodocker/digital-oceanfrom
timfrazee wants to merge 67 commits intodocker/digital-oceanfrom
Conversation
Closed
fa1df22 to
6e30f06
Compare
213a209 to
240ae2b
Compare
- Makes cookie readable from FE - Todo: restrict cookie domain
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds support for arbitrary SAML SSO providers for Manifold login.
Also provides the ability for sysadmins to set a default identity provider and optionally hide local login.
Configuration of these features is done in the environment to avoid mistakes that could render users unable to log into Manifold.
SAML
Adds support for SAML SSO providers to serve as identity providers for Manifold login.
SAML providers are defined in the environment. For each defined provider, additional settings / credentials are provided as namespaced ENV-vars.
By default, Manifold requires that it signs its metadata and Authn requests. It also requires that identity providers sign their assertions. To that end, it's necessary to generate a unique SHA256 X509 public/private key pair per-instance, which go in the
certificateandprivate_keysettings, respectively. With OpenSSL, this can be done with:The below example defines a SAML provider named "test1". Multiple providers can be defined as a comma-delimited list, then each provider's settings/credentials in appropriately-namespaced variables. The example shows common settings, but Manifold supports most of the options provided by Ruby SAML.
Additional settings:
User Groups
User Groups are a new model that serve to connect users to entitleable resources. Members of a user group are granted entitlements to the associated resources.
Entitlements granted through User Group memberships are granted when a user joins, and destroyed if/when a membership is destroyed. Since the membership is the entitler, this does not affect entitlements granted through other means.
This feature also adds admin UI to manage user groups, their members, and their entitleables.
External Identifiers
External identifiers are simple records designed to hold identifier strings that connect an entitleable resource or user group in Manifold to a resource known and managed by an external system. Identifiers are unique, guaranteeing that a maximum of one resource will be returned for a given identifier.
External identifiers are defined in admin under the appropriate resources.
External auth entitlement management
SAML IDPs can define claims named
user_groupsandentitlements, providing a semicolon-or-comma-delimited list of external identifiers of user groups or entitleable entities, respectively.When a user logs in, the IDP's list of desired user groups and entitlements is compared against the user's existing identity-managed entitlements, and they are updated to match (adding or removing as needed). The user's identity is referred as the
sourceon user groups and theentitleron entitlements, so this