64
Views
8
Comments
Question about User Management and External Authentication

Hello,

I am developing a system in OutSystems and I have a few questions regarding user management:

  1. I am using a separate user table in my system (not the OutSystems user table) and I am not utilizing the OutSystems user table. Is there any issue with keeping the system as is, or should I switch to using the OutSystems user table for user management?

  2. I am using external authentication (for example, through services like OAuth or Active Directory). Is there an automatic component in OutSystems that allows retrieving user details when they log in without requiring an internal login screen? How can I configure the system to automatically recognize the user who is logged into the external system?

Thank you in advance for your help!

2024-12-18 16-06-42
Junaid Syed

Hello,

You can opt to not user the User entity, but then you miss on so many built in features related to user management. Therefore I would suggest to switch back to System User entity unless you have a very genuine reason to use a custom entity.

For integration with external identity providers there is IDP forge component. Here is documentation explaining the configuration

https://success.outsystems.com/documentation/11/user_management/end_users_authentication/configure_saml_2_0_authentication/


Here are some more documents explaining the external authentication

https://success.outsystems.com/documentation/outsystems_developer_cloud/user_management/configure_authentication_with_external_identity_providers/

https://success.outsystems.com/documentation/outsystems_developer_cloud/user_management/configure_authentication_with_external_identity_providers/add_okta_for_use_as_an_external_identity_provider/


Hope it helps!

Junaid

2025-01-23 09-22-22
ABHIJITH G
Champion

Hi @hava

Using a separate user table in OutSystems instead of the built-in User entity is valid if your application requires custom user management; however, it comes with trade-offs, such as missing built-in features like role-based access control, session management, and seamless integration with OutSystems authentication mechanisms. For external authentication (e.g., OAuth or Active Directory), OutSystems supports automatic user recognition via the Authentication method in the Service Center, which can directly map user details from an external Identity Provider (IdP). To enable this, configure the external authentication settings (e.g., SAML or OpenID Connect) in the Service Center, retrieve user attributes like email or username from the IdP upon login, and implement logic to create or update records in your custom user table dynamically, bypassing the need for an internal login screen.

Thanks

UserImage.jpg
hava sh

I would like to add custom details for each user in my system, including fields such as a role customized for my system, custom email, and other additional fields that OutSystems does not provide in the built-in User table.

In this case, is it correct to disregard the built-in User table and create a custom table for storing user details? Or should I combine both tables?

Additionally, I tried adding an ENDUSER through the portal, but the user was not automatically added to the User table. Is there anything else I need to do to ensure that the additions happen automatically?

I would appreciate your advice on this matter.

Thank you in advance.

2024-12-18 16-06-42
Junaid Syed

To capture those details you can add an extension entity with necessary attributes to store those details and User ID as foreign key from User entity. Therefore by adding this extension entity you can still continue to use the User entity.

By portal do you mean the Users module? If so then you should see the added record in User entity. To view the user records select the User entity and choose View Data option. If there are too many records in the entity then you need to apply appropriate filter to pull the user record you added.

2025-01-23 09-22-22
ABHIJITH G
Champion

If only that's the case (add custom details for each user ), you can create a new entity (eg: UserDetail or UserProfile) with the Id of the new entity can be the foreign key from User Entity (One to One Relationship). This will satisfy your requirements.
Regarding the second query, in saving record in the User entity, you can use the CreateOrUpdateUser or CreateUser CRUD operations from the User table, or you can use the Users Portal (http://<your-environment-address/users).

2024-09-17 12-24-07
Rammurthy Naidu Boddu
Champion

Hi, 

  1. I am using a separate user table in my system (not the OutSystems user table) and I am not utilizing the OutSystems user table. Is there any issue with keeping the system as is, or should I switch to using the OutSystems user table for user management?
    For this use the system table for basic information and additional inforamtion to create entity and when you insert both the entity updated. 

  2. I am using external authentication (for example, through services like OAuth or Active Directory). Is there an automatic component in OutSystems that allows retrieving user details when they log in without requiring an internal login screen? How can I configure the system to automatically recognize the user who is logged into the external system?
    For this SSO9signal sign on) conpcet -  IDP compondent. 
    https://www.outsystems.com/forge/component-overview/599/idp-o11

2021-11-12 04-59-31
Manikandan Sambasivam

Hi,

Please check the below link https://learn.outsystems.com/training/journeys/authentication-587/overview-of-authentication-in-outsystems/o11/813, so you will get an idea about the authentication.

If you choose not to use the OutSystems user table, you’ll need to manage your session handling, and all your pages will need to be anonymous, which could lead to significant technical debt. I recommend utilizing the OutSystems user table and implementing external authentication. For any additional user information, as @Junaid Syed  suggested, you can use a conjunction table to store and manage this data. 

UserImage.jpg
hava sh

In my system, I first add data to the UserDetail table and only later to the User table. I might add multiple records to the UserDetail table in a batch, and only afterward create users in the User table.


In this situation, I’m looking for a way to maintain the relationship between the records in the two tables.

The UserDetail table contains fields like name, role, and other custom data, while the User table has fields such as Email, Username, and PhotoUrl.


How can I efficiently link these two tables?

Is there a recommended way in OutSystems to handle this scenario, or should I add a temporary identifier (like a GUID) and manage the relationships manually?


Community GuidelinesBe kind and respectful, give credit to the original source of content, and search for duplicates before posting.