This article is about special considerations to take into account in Offline Native Mobile Applications when using GeneXus Access Manager (GAM).
The GAM login must be done when the application is online. Logging in while being offline, is not supported.
Anyway, after a successful login, the user can go on working offline, navigating through the panels which require Authentication, because the session stays valid until the user logs out.
The following static methods of the 'GAMUser' object can be invoked when the application is online or offline, from code that is being executed in the device.
- GetId, e.g: &GAMGUID = GAMUser.GetId()
- GetEmail, e.g: &email = GAMUser.GetEmail()
- GetExternalId, e.g: &externalId = GAMUser.GetExternalId()
- GetLogin, e.g: &login = GAMUser.GetLogin()
- GetName, e.g: &name= GAMUser.GetName()
- isAnonymous, e.g: &isAnonymous = GAMUser.isAnonymous()
By default, if the Knowledge Base has already GAM installed, the synchronization programs given by GeneXus have an Authentication integrated security type, which means that only authenticated users on the application can run the synchronization programs correctly.
If you have to change these security settings, you can do it by changing the Integrated Security Level property of the main object and the one of its Offline Database object.
If the Main object's Integrated Security Level is 'Authorization', the corresponding execution permission is generated, and in runtime checked when OfflineEventReplicator procedure (Synchronization.Send method)is invoked.
if the Offline Database's Integrated Security Level is 'Authorization', the corresponding execution permission is generated, and in runtime checked when Data Synchronization (Receive) is invoked
- Authorization is only checked when accessing the Server-side, that is when accessing the synchronization services, or other REST Interfaces (Objects with Online Connectivity Support property)
- Non-static methods of 'GAMUser' object, e.g GAMUser.get(), or &GAMUser.GUID
- Other GAM external objects, like GAMSession object.