At line 7 changed 4 lines |
The plugin requires the following IdP information and configuration:\\ |
• Client ID\\ |
• Client Secret: Authorization Code Flow requires it.\\ |
• Redirect URL: The redirect URL is the endpoint in your IdP application where the IdP directs the user after successful authentication. This URL receives the authorization code or access token as part of the authentication process. The redirect URL must target the CrushFTP server and conclude with __/SSO_OIDC/__. Like:\\ |
The plugin requires the following information and configurations from the IdP's __App Registration__:\\ |
• __Client ID__\\ |
• __Client Secret__: Authorization Code Flow requires it.\\ |
• __Redirect URL__: The redirect URL is the endpoint in your IdP application where the IdP directs the user after successful authentication. This URL receives the authorization code or access token as part of the authentication process. The redirect URL must target the CrushFTP server and conclude with __/SSO_OIDC/__. Like:\\ |
At line 15 changed one line |
Google: [https://support.google.com/googleapi/answer/6158849]\\ |
__Google__: Refer to the App registration section under: [SMTP Google Mail Integration] ensure the redirect URL is described above.\\ |
At line 17 changed one line |
!!!2. Plugin Configuration\\ |
__Microsoft__: Refer to the App registration (Ondrive Personal) section under: [OneDriveSetup] ensure the redirect URL is described above.\\ |
__Microsoft B2C__: Refer to the App registration section under: [Azure Active Directory B2C Configuration] ensure the redirect URL is described above.\\ |
At line 20 added 6 lines |
__Amazon Cognito__: Refer to the App registration section under: [Amazon Cognito Configuration] ensure the redirect URL is described above.\\ |
\\ |
__Dropbox__: Refer to the App registration section under: [Dropbox Integration] ensure the redirect URL is described above.\\ |
|
\\ |
!!!2. Plugin Configuration\\ |
At line 27 changed 2 lines |
This HTTP URL is part of the OpenID Connect (OIDC) Discovery mechanism. It follows a standard called __RFC 5785__ ([https://datatracker.ietf.org/doc/html/rfc5785]), which defines the use of __.well-known__ URIs for discovering metadata about services. It queries this HTTP endpoint to configure itself dynamically, avoiding hard-coded values. The retrieved JSON document includes important endpoints and details like:\\ |
• Authorization endpoint\\ |
This HTTPS URL is part of the OpenID Connect (OIDC) Discovery mechanism. It follows a standard called __RFC 5785__ ([https://datatracker.ietf.org/doc/html/rfc5785]), which defines the use of __.well-known__ URIs for discovering metadata about services. It queries this HTTP endpoint to configure itself dynamically, avoiding hard-coded values. The retrieved JSON document includes important endpoints and details like:\\ |
• Authorization endpoint {{''__(Required)__''}}\\ |
At line 52 changed one line |
The JSON file should include the __authorization endpoint__. Example for Box cloud storage: |
The JSON file should include the __authorization endpoint__ ({{''__(Required)__''}}). Example for Box cloud storage: |
At line 62 changed one line |
__Client ID__: Provide the Client ID (the unique identifier) of your IdP.\\ |
__Client ID__: Provide the Client ID (the unique identifier of your IdP's App registration) of your IdP.\\ |
At line 86 changed one line |
__Get Refresh Token__: It is used to access the user's cloud storage through the IdP. It adjusts the __Authorization URL__ by appending the following parameters:\\ |
__Get Refresh Token__: It is used for access the user's cloud storage through the IdP. It adjusts the __Authorization URL__ by appending the following parameters:\\ |
At line 100 changed one line |
__Microsoft__ does not require additional scopes for this purpose. Ensure that the __App Registration__ includes the __"Files.ReadWrite.All"__ permission, configured as either Delegated or Application. More info at [SharePoint Integration].\\ |
__Microsoft Azure App Registration__ does not require additional scopes for this purpose. Ensure the __App Registration__ includes the __"Files.ReadWrite.All"__ permission, configured as either Delegated or Application. More info at [SharePoint Integration].\\ |
At line 124 added 6 lines |
__Special Case for Microsoft Azure AD:__ When using __Microsoft Azure AD__ as the Identity Provider (IdP), a specific user endpoint is required to retrieve group information for the authenticated user:\\ |
{{{ |
https://graph.microsoft.com/v1.0/me |
}}} |
In this scenario, the plugin makes __an additional API call to this endpoint__ to fetch the user's __group membership__ details. The App registration must include the __Group.Read.All__ permission to enable access to group information.\\ |
\\ |
At line 165 changed one line |
([User Manager] defines user's access.) -> If users already exist in CrushFTP's User Manager, you can use the CrushOIDC plugin __just for authentication__. |
It is useful when user accounts are already defined and managed within CrushFTP's [User Manager], you can leverage the CrushOIDC plugin to authenticate users against external Identity Providers. This allows existing users to utilize OIDC for login while maintaining their existing user accounts and access privileges as defined within CrushFTP.\\ |
At line 176 changed one line |
You can configure different Template Users (see 2.2.5 User Templates) based on IdP claims. If the template user is provided the signed-in user inherits both the settings and the VFS items (as Linked [VFS]).\\ |
__Authentication aspect__: Permit users based on specific IdP claims. \\ |
At line 191 added 10 lines |
__!!! Important__: If roles are configured and the IdP's user does not match any of the predefined roles, the authentication will be rejected due to the absence of matching roles.\\ |
\\ |
__Template User Aspect__: You can configure different Template Users (see 2.2.5 User Templates) based on IdP claims. If a template user is specified, the signed-in user inherits both the settings and the VFS items (as Linked [VFS]).\\ |
__!!! Important__: Template user must exist in the [User Manager], otherwise, it will have no effect.\\ |
\\ |
__IdP Attribute Value__ -> Supports different types of matching:\\ |
• __Exact Match__: Matches the value exactly as provided.\\ |
• __Simple Match__: Use patterns like __*mail.com*__ to match substrings.\\ |
• __Regex Match__: Use the format __REGEX:<<your-regular-expression>>__ for more complex patterns.\\ |
\\ |
At line 201 changed 2 lines |
__!!! Important__: If roles are configured and the IdP's user does not match any of the predefined roles, the authentication will be rejected due to the absence of matching roles.\\ |
__!!! Important__: Template user must exist on [User Manager], otherwise it takes no effect. |
If the attribute value is an array, you can reference only one element for an exact match. Example: If the IDP attribute value is __:\\ |
{{{ |
[groups:"group1", "group2"] -> you can match with "group1". |
}}}\\ |
At line 229 added 30 lines |
!2.2.7 Custom VFS {{''__(Required Under Specific Conditions)__''}}: |
\\ |
[VFS] related settings. You can configure a custom [VFS] for CrushOIDC users.\\ |
__!!! Important:__ If the CrushOIDC user has no assigned VFS, __authentication will be rejected due to the absence of an assigned [VFS]__. CrushOAIDC user can inherit VFS configuration from:\\ |
• Template User (see at __2.2.5 User Templates__)\\ |
• Roles (Like at __2.2.6 Roles__)\\ |
• Custom VFS\\ |
\\ |
Custom VFS example using plugin settings and refresh token from OpenID connect:\\ |
{{{ |
GDrive: gdrive://{oidc_client_id}~{oidc_client_secret_decoded}:{oidc_refresh_token}@www.google.com/ |
OneDrive: onedrive://{oidc_client_id}~{oidc_client_secret_encoded}:{oidc_refresh_token}@graph.microsoft.com/ |
DropBox: dropbox://{oidc_client_id}~{oidc_client_secret_decoded}:{oidc_refresh_token}@api.dropboxapi.com/ |
}}}\\ |
\\ |
!3. DMZ\\ |
\\ |
[CrushOIDC/oidc_dmz_plugin_settings.png]\\ |
\\ |
The DMZ's CrushOIDC plugin has a slightly different UI because IdP user validation is handled exclusively on the internal node. To function properly, the __DMZ must replicate the internal node's settings__ for the following parameters:\\ |
\\ |
• Plugin name\\ |
• OpenID Configuration URL\\ |
• Client ID\\ |
• Client Secret (Optional): Only if it is required for the authorization url.\\ |
• Authorization URL\\ |
• Scope\\ |
• Get Refresh Token\\ |
• Login button text\\ |
\\ |