auth: updated saml docs, and re-order info on plugin details for easier setup
This commit is contained in:
parent
11bd292508
commit
cefbec329a
10 changed files with 392 additions and 94 deletions
|
|
@ -4,15 +4,30 @@ WORKDIR /project
|
||||||
|
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install --no-install-recommends --yes \
|
&& apt-get install --no-install-recommends --yes \
|
||||||
curl \
|
curl \
|
||||||
zip \
|
zip \
|
||||||
graphviz \
|
graphviz \
|
||||||
imagemagick \
|
dvipng \
|
||||||
make \
|
imagemagick \
|
||||||
|
make \
|
||||||
|
latexmk \
|
||||||
|
texlive-latex-recommended \
|
||||||
|
texlive-latex-extra \
|
||||||
|
texlive-xetex \
|
||||||
|
fonts-freefont-otf \
|
||||||
|
texlive-fonts-recommended \
|
||||||
|
texlive-lang-greek \
|
||||||
|
tex-gyre \
|
||||||
&& apt-get autoremove \
|
&& apt-get autoremove \
|
||||||
&& apt-get clean \
|
&& apt-get clean \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \
|
||||||
|
unzip awscliv2.zip && \
|
||||||
|
./aws/install && \
|
||||||
|
rm -rf ./aws && \
|
||||||
|
rm awscliv2.zip
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
python3 -m pip install --no-cache-dir --upgrade pip && \
|
python3 -m pip install --no-cache-dir --upgrade pip && \
|
||||||
python3 -m pip install --no-cache-dir Sphinx Pillow
|
python3 -m pip install --no-cache-dir Sphinx Pillow
|
||||||
|
|
|
||||||
159
docs/auth/auth-saml-azure.rst
Normal file
159
docs/auth/auth-saml-azure.rst
Normal file
|
|
@ -0,0 +1,159 @@
|
||||||
|
.. _config-saml-azure-ref:
|
||||||
|
|
||||||
|
|
||||||
|
SAML 2.0 with Azure Entra ID
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
**This plugin is available only in EE Edition.**
|
||||||
|
|
||||||
|
|RCE| supports SAML 2.0 Authentication with Azure Entra ID provider. This allows
|
||||||
|
users to log-in to RhodeCode via SSO mechanism of external identity provider
|
||||||
|
such as Azure AD. The login can be triggered either by the external IDP, or internally
|
||||||
|
by clicking specific authentication button on the log-in page.
|
||||||
|
|
||||||
|
|
||||||
|
Configuration steps
|
||||||
|
^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
To configure Duo Security SAML authentication, use the following steps:
|
||||||
|
|
||||||
|
1. From the |RCE| interface, select
|
||||||
|
:menuselection:`Admin --> Authentication`
|
||||||
|
2. Activate the `Azure Entra ID` plugin and select :guilabel:`Save`
|
||||||
|
3. Go to newly available menu option called `Azure Entra ID` on the left side.
|
||||||
|
4. Check the `enabled` check box in the plugin configuration section,
|
||||||
|
and fill in the required SAML information and :guilabel:`Save`, for more details,
|
||||||
|
see :ref:`config-saml-azure`
|
||||||
|
|
||||||
|
|
||||||
|
.. _config-saml-azure:
|
||||||
|
|
||||||
|
|
||||||
|
Example SAML Azure Entra ID configuration
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Example configuration for SAML 2.0 with Azure Entra ID provider
|
||||||
|
|
||||||
|
|
||||||
|
Enabled
|
||||||
|
`True`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Enable or disable this authentication plugin.
|
||||||
|
|
||||||
|
|
||||||
|
Auth Cache TTL
|
||||||
|
`30`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Amount of seconds to cache the authentication and permissions check response call for this plugin.
|
||||||
|
Useful for expensive calls like LDAP to improve the performance of the system (0 means disabled).
|
||||||
|
|
||||||
|
Debug
|
||||||
|
`True`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Enable or disable debug mode that shows SAML errors in the RhodeCode logs.
|
||||||
|
|
||||||
|
|
||||||
|
Auth button name
|
||||||
|
`Azure Entra ID`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Alternative authentication display name. E.g AzureAuth, CorporateID etc.
|
||||||
|
|
||||||
|
|
||||||
|
Entity ID
|
||||||
|
`https://sts.windows.net/APP_ID/`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Identity Provider entity/metadata URI. Known as "Microsoft Entra Identifier"
|
||||||
|
E.g. https://sts.windows.net/abcd-c655-dcee-aab7-abcd/
|
||||||
|
|
||||||
|
SSO URL
|
||||||
|
`https://login.microsoftonline.com/APP_ID/saml2`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
SSO (SingleSignOn) endpoint URL of the IdP. This can be used to initialize login, Known also as Login URL
|
||||||
|
E.g. https://login.microsoftonline.com/abcd-c655-dcee-aab7-abcd/saml2
|
||||||
|
|
||||||
|
SLO URL
|
||||||
|
`https://login.microsoftonline.com/APP_ID/saml2`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
SLO (SingleLogout) endpoint URL of the IdP. , Known also as Logout URL
|
||||||
|
E.g. https://login.microsoftonline.com/abcd-c655-dcee-aab7-abcd/saml2
|
||||||
|
|
||||||
|
x509cert
|
||||||
|
`<CERTIFICATE_STRING>`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Identity provider public x509 certificate. It will be converted to single-line format without headers.
|
||||||
|
Download the raw base64 encoded certificate from the Identity provider and paste it here.
|
||||||
|
|
||||||
|
SAML Signature
|
||||||
|
`sha-256`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Type of Algorithm to use for verification of SAML signature on Identity provider side.
|
||||||
|
|
||||||
|
SAML Digest
|
||||||
|
`sha-256`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Type of Algorithm to use for verification of SAML digest on Identity provider side.
|
||||||
|
|
||||||
|
Service Provider Cert Dir
|
||||||
|
`/etc/rhodecode/conf/saml_ssl/`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Optional directory to store service provider certificate and private keys.
|
||||||
|
Expected certs for the SP should be stored in this folder as:
|
||||||
|
* sp.key Private Key
|
||||||
|
* sp.crt Public cert
|
||||||
|
* sp_new.crt Future Public cert
|
||||||
|
|
||||||
|
Also you can use other cert to sign the metadata of the SP using the:
|
||||||
|
* metadata.key
|
||||||
|
* metadata.crt
|
||||||
|
|
||||||
|
Expected NameID Format
|
||||||
|
`nameid-format:emailAddress`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The format that specifies how the NameID is sent to the service provider.
|
||||||
|
|
||||||
|
User ID Attribute
|
||||||
|
`user.email`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
User ID Attribute name. This defines which attribute in SAML response will be used to link accounts via unique id.
|
||||||
|
Ensure this is returned from DuoSecurity for example via duo_username.
|
||||||
|
|
||||||
|
Username Attribute
|
||||||
|
`user.username`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Username Attribute name. This defines which attribute in SAML response will map to a username.
|
||||||
|
|
||||||
|
Email Attribute
|
||||||
|
`user.email`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Email Attribute name. This defines which attribute in SAML response will map to an email address.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Below is example setup from Azure Administration page that can be used with above config.
|
||||||
|
|
||||||
|
.. image:: ../images/saml-azure-service-provider-example.png
|
||||||
|
:alt: Azure SAML setup example
|
||||||
|
:scale: 50 %
|
||||||
|
|
||||||
|
|
||||||
|
Below is an example attribute mapping set for IDP provider required by the above config.
|
||||||
|
|
||||||
|
|
||||||
|
.. image:: ../images/saml-azure-attributes-example.png
|
||||||
|
:alt: Azure SAML setup example
|
||||||
|
:scale: 50 %
|
||||||
|
|
@ -13,7 +13,7 @@ This method simply enables SAML authentication for many users at once.
|
||||||
From the server RhodeCode Enterprise is running run ishell on the instance which we
|
From the server RhodeCode Enterprise is running run ishell on the instance which we
|
||||||
want to apply the SAML migration::
|
want to apply the SAML migration::
|
||||||
|
|
||||||
rccontrol ishell enterprise-1
|
./rcstack cli ishell
|
||||||
|
|
||||||
Follow these steps to enable SAML authentication for multiple users.
|
Follow these steps to enable SAML authentication for multiple users.
|
||||||
|
|
||||||
|
|
@ -46,6 +46,8 @@ From available options pick only one and run the `import` statement
|
||||||
|
|
||||||
# for Duo Security
|
# for Duo Security
|
||||||
In [2]: from rc_auth_plugins.auth_duo_security import RhodeCodeAuthPlugin
|
In [2]: from rc_auth_plugins.auth_duo_security import RhodeCodeAuthPlugin
|
||||||
|
# for Azure Entra
|
||||||
|
In [2]: from rc_auth_plugins.auth_azure import RhodeCodeAuthPlugin
|
||||||
# for OneLogin
|
# for OneLogin
|
||||||
In [2]: from rc_auth_plugins.auth_onelogin import RhodeCodeAuthPlugin
|
In [2]: from rc_auth_plugins.auth_onelogin import RhodeCodeAuthPlugin
|
||||||
# generic SAML plugin
|
# generic SAML plugin
|
||||||
|
|
@ -62,13 +64,13 @@ Enter in the ishell prompt
|
||||||
...: attrs = saml2user.get(user.user_id)
|
...: attrs = saml2user.get(user.user_id)
|
||||||
...: provider = RhodeCodeAuthPlugin.uid
|
...: provider = RhodeCodeAuthPlugin.uid
|
||||||
...: if existing_identity:
|
...: if existing_identity:
|
||||||
...: print('Identity for user `{}` already exists, skipping'.format(user.username))
|
...: print(f'Identity for user `{user.username}` already exists, skipping')
|
||||||
...: continue
|
...: continue
|
||||||
...: if attrs:
|
...: if attrs:
|
||||||
...: external_id = attrs['id']
|
...: external_id = attrs['id']
|
||||||
...: new_external_identity = ExternalIdentity()
|
...: new_external_identity = ExternalIdentity()
|
||||||
...: new_external_identity.external_id = external_id
|
...: new_external_identity.external_id = external_id
|
||||||
...: new_external_identity.external_username = '{}-saml-{}'.format(user.username, user.user_id)
|
...: new_external_identity.external_username = f'{user.username}-saml-{user.user_id}'
|
||||||
...: new_external_identity.provider_name = provider
|
...: new_external_identity.provider_name = provider
|
||||||
...: new_external_identity.local_user_id = user.user_id
|
...: new_external_identity.local_user_id = user.user_id
|
||||||
...: new_external_identity.access_token = ''
|
...: new_external_identity.access_token = ''
|
||||||
|
|
@ -76,7 +78,7 @@ Enter in the ishell prompt
|
||||||
...: new_external_identity.alt_token = ''
|
...: new_external_identity.alt_token = ''
|
||||||
...: Session().add(ex_identity)
|
...: Session().add(ex_identity)
|
||||||
...: Session().commit()
|
...: Session().commit()
|
||||||
...: print('Set user `{}` external identity bound to ExternalID:{}'.format(user.username, external_id))
|
...: print(f'Set user `{user.username}` external identity bound to ExternalID:{external_id}')
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,62 +32,116 @@ To configure Duo Security SAML authentication, use the following steps:
|
||||||
Example SAML Duo Security configuration
|
Example SAML Duo Security configuration
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Example configuration for SAML 2.0 with Duo Security provider::
|
Example configuration for SAML 2.0 with Duo Security provider
|
||||||
|
|
||||||
*option*: `enabled` => `True`
|
|
||||||
# Enable or disable this authentication plugin.
|
|
||||||
|
|
||||||
*option*: `cache_ttl` => `0`
|
Enabled
|
||||||
# Amount of seconds to cache the authentication and permissions check response call for this plugin.
|
`True`:
|
||||||
# Useful for expensive calls like LDAP to improve the performance of the system (0 means disabled).
|
|
||||||
|
|
||||||
*option*: `debug` => `True`
|
.. note::
|
||||||
# Enable or disable debug mode that shows SAML errors in the RhodeCode logs.
|
Enable or disable this authentication plugin.
|
||||||
|
|
||||||
*option*: `entity_id` => `http://rc-app.com/dag/saml2/idp/metadata.php`
|
|
||||||
# Identity Provider entity/metadata URI.
|
|
||||||
# E.g. https://duo-gateway.com/dag/saml2/idp/metadata.php
|
|
||||||
|
|
||||||
*option*: `sso_service_url` => `http://rc-app.com/dag/saml2/idp/SSOService.php?spentityid=http://rc.local.pl/_admin/auth/duosecurity/saml-metadata`
|
Auth Cache TTL
|
||||||
# SSO (SingleSignOn) endpoint URL of the IdP. This can be used to initialize login
|
`30`:
|
||||||
# E.g. https://duo-gateway.com/dag/saml2/idp/SSOService.php?spentityid=<metadata_entity_id>
|
|
||||||
|
|
||||||
*option*: `slo_service_url` => `http://rc-app.com/dag/saml2/idp/SingleLogoutService.php?ReturnTo=http://rc-app.com/dag/module.php/duosecurity/logout.php`
|
.. note::
|
||||||
# SLO (SingleLogout) endpoint URL of the IdP.
|
Amount of seconds to cache the authentication and permissions check response call for this plugin.
|
||||||
# E.g. https://duo-gateway.com/dag/saml2/idp/SingleLogoutService.php?ReturnTo=http://duo-gateway.com/_admin/saml/sign-out-endpoint
|
Useful for expensive calls like LDAP to improve the performance of the system (0 means disabled).
|
||||||
|
|
||||||
*option*: `x509cert` => `<CERTIFICATE_STRING>`
|
Debug
|
||||||
# Identity provider public x509 certificate. It will be converted to single-line format without headers
|
`True`:
|
||||||
|
|
||||||
*option*: `name_id_format` => `sha-1`
|
.. note::
|
||||||
# The format that specifies how the NameID is sent to the service provider.
|
Enable or disable debug mode that shows SAML errors in the RhodeCode logs.
|
||||||
|
|
||||||
*option*: `signature_algo` => `sha-256`
|
|
||||||
# Type of Algorithm to use for verification of SAML signature on Identity provider side
|
|
||||||
|
|
||||||
*option*: `digest_algo` => `sha-256`
|
Auth button name
|
||||||
# Type of Algorithm to use for verification of SAML digest on Identity provider side
|
`Azure Entra ID`:
|
||||||
|
|
||||||
*option*: `cert_dir` => `/etc/saml/`
|
.. note::
|
||||||
# Optional directory to store service provider certificate and private keys.
|
Alternative authentication display name. E.g AzureAuth, CorporateID etc.
|
||||||
# Expected certs for the SP should be stored in this folder as:
|
|
||||||
# * sp.key Private Key
|
|
||||||
# * sp.crt Public cert
|
|
||||||
# * sp_new.crt Future Public cert
|
|
||||||
#
|
|
||||||
# Also you can use other cert to sign the metadata of the SP using the:
|
|
||||||
# * metadata.key
|
|
||||||
# * metadata.crt
|
|
||||||
|
|
||||||
*option*: `user_id_attribute` => `PersonImmutableID`
|
|
||||||
# User ID Attribute name. This defines which attribute in SAML response will be used to link accounts via unique id.
|
|
||||||
# Ensure this is returned from DuoSecurity for example via duo_username
|
|
||||||
|
|
||||||
*option*: `username_attribute` => `User.username`
|
Entity ID
|
||||||
# Username Attribute name. This defines which attribute in SAML response will map to an username.
|
`https://my-duo-gateway.com/dag/saml2/idp/metadata.php`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Identity Provider entity/metadata URI.
|
||||||
|
E.g. https://duo-gateway.com/dag/saml2/idp/metadata.php
|
||||||
|
|
||||||
|
SSO URL
|
||||||
|
`https://duo-gateway.com/dag/saml2/idp/SSOService.php?spentityid=<metadata_entity_id>`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
SSO (SingleSignOn) endpoint URL of the IdP. This can be used to initialize login, Known also as Login URL
|
||||||
|
E.g. http://rc-app.com/dag/saml2/idp/SSOService.php?spentityid=https://docker-dev/_admin/auth/duosecurity/saml-metadata
|
||||||
|
|
||||||
|
SLO URL
|
||||||
|
`https://duo-gateway.com/dag/saml2/idp/SingleLogoutService.php?ReturnTo=<return_url>`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
SLO (SingleLogout) endpoint URL of the IdP. , Known also as Logout URL
|
||||||
|
E.g. http://rc-app.com/dag/saml2/idp/SingleLogoutService.php?ReturnTo=https://docker-dev/_admin/auth/duosecurity/saml-sign-out-endpoint
|
||||||
|
|
||||||
|
x509cert
|
||||||
|
`<CERTIFICATE_STRING>`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Identity provider public x509 certificate. It will be converted to single-line format without headers.
|
||||||
|
Download the raw base64 encoded certificate from the Identity provider and paste it here.
|
||||||
|
|
||||||
|
SAML Signature
|
||||||
|
`sha-256`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Type of Algorithm to use for verification of SAML signature on Identity provider side.
|
||||||
|
|
||||||
|
SAML Digest
|
||||||
|
`sha-256`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Type of Algorithm to use for verification of SAML digest on Identity provider side.
|
||||||
|
|
||||||
|
Service Provider Cert Dir
|
||||||
|
`/etc/rhodecode/conf/saml_ssl/`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Optional directory to store service provider certificate and private keys.
|
||||||
|
Expected certs for the SP should be stored in this folder as:
|
||||||
|
* sp.key Private Key
|
||||||
|
* sp.crt Public cert
|
||||||
|
* sp_new.crt Future Public cert
|
||||||
|
|
||||||
|
Also you can use other cert to sign the metadata of the SP using the:
|
||||||
|
* metadata.key
|
||||||
|
* metadata.crt
|
||||||
|
|
||||||
|
Expected NameID Format
|
||||||
|
`nameid-format:emailAddress`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The format that specifies how the NameID is sent to the service provider.
|
||||||
|
|
||||||
|
User ID Attribute
|
||||||
|
`PersonImmutableID`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
User ID Attribute name. This defines which attribute in SAML response will be used to link accounts via unique id.
|
||||||
|
Ensure this is returned from DuoSecurity for example via duo_username.
|
||||||
|
|
||||||
|
Username Attribute
|
||||||
|
`User.username`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Username Attribute name. This defines which attribute in SAML response will map to a username.
|
||||||
|
|
||||||
|
Email Attribute
|
||||||
|
`User.email`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Email Attribute name. This defines which attribute in SAML response will map to an email address.
|
||||||
|
|
||||||
*option*: `email_attribute` => `User.email`
|
|
||||||
# Email Attribute name. This defines which attribute in SAML response will map to an email address.
|
|
||||||
|
|
||||||
|
|
||||||
Below is example setup from DUO Administration page that can be used with above config.
|
Below is example setup from DUO Administration page that can be used with above config.
|
||||||
|
|
|
||||||
|
|
@ -15,5 +15,6 @@ Please check for reference two example providers:
|
||||||
|
|
||||||
auth-saml-duosecurity
|
auth-saml-duosecurity
|
||||||
auth-saml-onelogin
|
auth-saml-onelogin
|
||||||
|
auth-saml-azure
|
||||||
auth-saml-bulk-enroll-users
|
auth-saml-bulk-enroll-users
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,62 +32,115 @@ To configure OneLogin SAML authentication, use the following steps:
|
||||||
Example SAML OneLogin configuration
|
Example SAML OneLogin configuration
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Example configuration for SAML 2.0 with OneLogin provider::
|
Example configuration for SAML 2.0 with OneLogin provider
|
||||||
|
|
||||||
*option*: `enabled` => `True`
|
|
||||||
# Enable or disable this authentication plugin.
|
|
||||||
|
|
||||||
*option*: `cache_ttl` => `0`
|
Enabled
|
||||||
# Amount of seconds to cache the authentication and permissions check response call for this plugin.
|
`True`:
|
||||||
# Useful for expensive calls like LDAP to improve the performance of the system (0 means disabled).
|
|
||||||
|
|
||||||
*option*: `debug` => `True`
|
.. note::
|
||||||
# Enable or disable debug mode that shows SAML errors in the RhodeCode logs.
|
Enable or disable this authentication plugin.
|
||||||
|
|
||||||
*option*: `entity_id` => `https://app.onelogin.com/saml/metadata/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`
|
|
||||||
# Identity Provider entity/metadata URI.
|
|
||||||
# E.g. https://app.onelogin.com/saml/metadata/<onelogin_connector_id>
|
|
||||||
|
|
||||||
*option*: `sso_service_url` => `https://customer-domain.onelogin.com/trust/saml2/http-post/sso/xxxxxx`
|
Auth Cache TTL
|
||||||
# SSO (SingleSignOn) endpoint URL of the IdP. This can be used to initialize login
|
`30`:
|
||||||
# E.g. https://app.onelogin.com/trust/saml2/http-post/sso/<onelogin_connector_id>
|
|
||||||
|
|
||||||
*option*: `slo_service_url` => `https://customer-domain.onelogin.com/trust/saml2/http-redirect/slo/xxxxxx`
|
.. note::
|
||||||
# SLO (SingleLogout) endpoint URL of the IdP.
|
Amount of seconds to cache the authentication and permissions check response call for this plugin.
|
||||||
# E.g. https://app.onelogin.com/trust/saml2/http-redirect/slo/<onelogin_connector_id>
|
Useful for expensive calls like LDAP to improve the performance of the system (0 means disabled).
|
||||||
|
|
||||||
*option*: `x509cert` => `<CERTIFICATE_STRING>`
|
Debug
|
||||||
# Identity provider public x509 certificate. It will be converted to single-line format without headers
|
`True`:
|
||||||
|
|
||||||
*option*: `name_id_format` => `sha-1`
|
.. note::
|
||||||
# The format that specifies how the NameID is sent to the service provider.
|
Enable or disable debug mode that shows SAML errors in the RhodeCode logs.
|
||||||
|
|
||||||
*option*: `signature_algo` => `sha-256`
|
|
||||||
# Type of Algorithm to use for verification of SAML signature on Identity provider side
|
|
||||||
|
|
||||||
*option*: `digest_algo` => `sha-256`
|
Auth button name
|
||||||
# Type of Algorithm to use for verification of SAML digest on Identity provider side
|
`Azure Entra ID`:
|
||||||
|
|
||||||
*option*: `cert_dir` => `/etc/saml/`
|
.. note::
|
||||||
# Optional directory to store service provider certificate and private keys.
|
Alternative authentication display name. E.g AzureAuth, CorporateID etc.
|
||||||
# Expected certs for the SP should be stored in this folder as:
|
|
||||||
# * sp.key Private Key
|
|
||||||
# * sp.crt Public cert
|
|
||||||
# * sp_new.crt Future Public cert
|
|
||||||
#
|
|
||||||
# Also you can use other cert to sign the metadata of the SP using the:
|
|
||||||
# * metadata.key
|
|
||||||
# * metadata.crt
|
|
||||||
|
|
||||||
*option*: `user_id_attribute` => `PersonImmutableID`
|
|
||||||
# User ID Attribute name. This defines which attribute in SAML response will be used to link accounts via unique id.
|
|
||||||
# Ensure this is returned from OneLogin for example via Internal ID
|
|
||||||
|
|
||||||
*option*: `username_attribute` => `User.username`
|
Entity ID
|
||||||
# Username Attribute name. This defines which attribute in SAML response will map to an username.
|
`https://app.onelogin.com/saml/metadata/<onelogin_connector_id>`:
|
||||||
|
|
||||||
*option*: `email_attribute` => `User.email`
|
.. note::
|
||||||
# Email Attribute name. This defines which attribute in SAML response will map to an email address.
|
Identity Provider entity/metadata URI.
|
||||||
|
E.g. https://app.onelogin.com/saml/metadata/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
||||||
|
|
||||||
|
SSO URL
|
||||||
|
`https://app.onelogin.com/trust/saml2/http-post/sso/<onelogin_connector_id>`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
SSO (SingleSignOn) endpoint URL of the IdP. This can be used to initialize login, Known also as Login URL
|
||||||
|
E.g. https://app.onelogin.com/trust/saml2/http-post/sso/<onelogin_connector_id>
|
||||||
|
|
||||||
|
SLO URL
|
||||||
|
`https://app.onelogin.com/trust/saml2/http-redirect/slo/<onelogin_connector_id>`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
SLO (SingleLogout) endpoint URL of the IdP. , Known also as Logout URL
|
||||||
|
E.g. https://app.onelogin.com/trust/saml2/http-redirect/slo/<onelogin_connector_id>
|
||||||
|
|
||||||
|
x509cert
|
||||||
|
`<CERTIFICATE_STRING>`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Identity provider public x509 certificate. It will be converted to single-line format without headers.
|
||||||
|
Download the raw base64 encoded certificate from the Identity provider and paste it here.
|
||||||
|
|
||||||
|
SAML Signature
|
||||||
|
`sha-256`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Type of Algorithm to use for verification of SAML signature on Identity provider side.
|
||||||
|
|
||||||
|
SAML Digest
|
||||||
|
`sha-256`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Type of Algorithm to use for verification of SAML digest on Identity provider side.
|
||||||
|
|
||||||
|
Service Provider Cert Dir
|
||||||
|
`/etc/rhodecode/conf/saml_ssl/`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Optional directory to store service provider certificate and private keys.
|
||||||
|
Expected certs for the SP should be stored in this folder as:
|
||||||
|
* sp.key Private Key
|
||||||
|
* sp.crt Public cert
|
||||||
|
* sp_new.crt Future Public cert
|
||||||
|
|
||||||
|
Also you can use other cert to sign the metadata of the SP using the:
|
||||||
|
* metadata.key
|
||||||
|
* metadata.crt
|
||||||
|
|
||||||
|
Expected NameID Format
|
||||||
|
`nameid-format:emailAddress`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The format that specifies how the NameID is sent to the service provider.
|
||||||
|
|
||||||
|
User ID Attribute
|
||||||
|
`PersonImmutableID`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
User ID Attribute name. This defines which attribute in SAML response will be used to link accounts via unique id.
|
||||||
|
Ensure this is returned from DuoSecurity for example via duo_username.
|
||||||
|
|
||||||
|
Username Attribute
|
||||||
|
`User.username`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Username Attribute name. This defines which attribute in SAML response will map to a username.
|
||||||
|
|
||||||
|
Email Attribute
|
||||||
|
`User.email`:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Email Attribute name. This defines which attribute in SAML response will map to an email address.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ administrator greater control over how users authenticate with the system.
|
||||||
auth-saml-generic
|
auth-saml-generic
|
||||||
auth-saml-onelogin
|
auth-saml-onelogin
|
||||||
auth-saml-duosecurity
|
auth-saml-duosecurity
|
||||||
|
auth-saml-azure
|
||||||
auth-crowd
|
auth-crowd
|
||||||
auth-pam
|
auth-pam
|
||||||
ssh-connection
|
ssh-connection
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ class AuthnRootResource(AuthnResourceBase):
|
||||||
"""
|
"""
|
||||||
This is the root traversal resource object for the authentication settings.
|
This is the root traversal resource object for the authentication settings.
|
||||||
"""
|
"""
|
||||||
|
is_root = True
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._store = collections.OrderedDict()
|
self._store = collections.OrderedDict()
|
||||||
|
|
|
||||||
|
|
@ -26,8 +26,13 @@
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<ul class="nav nav-pills nav-stacked">
|
<ul class="nav nav-pills nav-stacked">
|
||||||
% for item in resource.get_root().get_nav_list():
|
% for item in resource.get_root().get_nav_list():
|
||||||
|
|
||||||
<li ${('class=active' if item == resource else '')}>
|
<li ${('class=active' if item == resource else '')}>
|
||||||
<a href="${request.resource_path(item, route_name='auth_home')}">${item.display_name}</a>
|
% if getattr(item, 'is_root', False):
|
||||||
|
<a href="${request.resource_path(item, route_name='auth_home')}">${item.display_name}</a>
|
||||||
|
% else:
|
||||||
|
<a style="padding-left: 10px" href="${request.resource_path(item, route_name='auth_home')}">${item.display_name}</a>
|
||||||
|
% endif
|
||||||
</li>
|
</li>
|
||||||
% endfor
|
% endfor
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,13 @@
|
||||||
${h.secure_form(request.resource_path(resource, route_name='auth_home'), request=request)}
|
${h.secure_form(request.resource_path(resource, route_name='auth_home'), request=request)}
|
||||||
<div class="form">
|
<div class="form">
|
||||||
|
|
||||||
|
## Allow derived templates to add something above the form
|
||||||
|
## input fields
|
||||||
|
%if hasattr(next, 'above_form_fields'):
|
||||||
|
${next.above_form_fields()}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
<h4>${_('Plugin Configuration')}</h4>
|
||||||
%for node in plugin.get_settings_schema():
|
%for node in plugin.get_settings_schema():
|
||||||
<%
|
<%
|
||||||
label_to_type = {'label-checkbox': 'bool', 'label-textarea': 'textarea'}
|
label_to_type = {'label-checkbox': 'bool', 'label-textarea': 'textarea'}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue