| 
 z/Scope Anywhere provides you with an API that you can use to develop your own authentication method and integrate it with z/Scope Anywhere. 
  
Choose the code sample of your language of preference and add it to your implementation: 
  
  
Delphi: 
  
function ValidateUser( 
    const UserName, Password, Metadata: PWideChar; 
    SecurityRole, WinUser, WinPass, CustomData: PWideChar; 
    var Handled: Boolean): Cardinal; stdcall; 
 | 
 
 
 
  
  
Input: 
  
Username & Password 
 | 
The credentials that you are trying to validate with the external authentication 
 | 
 
Metadata 
 | 
A JSON with the remote browser/user information: URL, IP, Cookie UBRWID and the product's name 
 | 
 
 
 
  
  
Output: 
  
SecurityRole 
 | 
Specifies the Windows mapping of the authenticated user (UserName and Password). This SecurityRole can either be a Windows user or group, and it will be used to check which profiles it has access to 
 | 
 
WinUser, WinPass 
 | 
(optional) Credentials of a mapped Windows user. Will be used to run the application instance. 
 | 
 
CustomData 
 | 
(optional) Data for passing on to the application 
 | 
 
Handled 
 | 
Returns whether the login could be handled by the DLL. 
 | 
 
 
 
  
  
C++: 
  
THINFINITY_API DWORD __stdcall ValidateUser(LPWSTR lpUserName, LPWSTR lpPassword, LPWSTR lpMetadata, 
  LPWSTR lpSecurityRole, LPWSTR lpWinUser, LPWSTR lpWinPass, LPWSTR lpCustomData, 
  PBOOLEAN pHandled)    
 | 
 
 
 
  
  
Input: 
  
lpUserName & lpPassword 
 | 
The credentials that you are trying to validate with the external authentication 
 | 
 
lpMetadata 
 | 
A JSON with the remote browser/user information: URL, IP, Cookie UBRWID and the product's name 
 | 
 
 
 
  
  
Output: 
  
lpSecurityRole 
 | 
Specifies the Windows mapping of the authenticated user (UserName and Password). This SecurityRole can either be a Windows user or group, and it will be used to check which profiles it has access to 
 | 
 
lpWinUser, lpWinPass 
 | 
(optional) Credentials of a mapped Windows user. Will be used to run the application instance. 
 | 
 
lpCustomData 
 | 
Data for passing on to the application  
 | 
 
pHandled 
 | 
Returns whether the login could be handled by the DLL. 
 | 
 
 
 
  
  
C#: 
  
[DllExport("ValidateUser", CallingConvention = CallingConvention.StdCall)] 
[return: MarshalAs(UnmanagedType.I4)] 
public static Int32 ValidateUser( 
        [In, MarshalAs(UnmanagedType.LPWStr)] string lpUserName, 
        [In, MarshalAs(UnmanagedType.LPWStr)] string lpPassword, 
        [In, MarshalAs(UnmanagedType.LPWStr)] string lpMetadata, 
        [In, Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder lpSecurityRole, 
        [In, Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder lpWinUser, 
        [In, Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder lpWinPass, 
        [In, Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder lpCustomData, 
        [Out] bool pHandled);   
 | 
 
 
 
  
  
Input: 
  
lpUserName & lpPassword 
 | 
Specifies the Windows mapping of the authenticated user (UserName and Password). This SecurityRole can either be a Windows user or group, and it will be used to check which profiles it has access to 
 | 
 
lpMetadata 
 | 
A JSON with the remote browser/user information: URL, IP, Cookie UBRWID and the product's name 
 | 
 
 
 
  
  
Output: 
  
lpSecurityRole 
 | 
The authenticated username 
 | 
 
lpWinUser, lpWinPass 
 | 
(optional) Credentials of a mapped Windows user. Will be used to run the application instance. 
 | 
 
lpCustomData 
 | 
Data to pass on to the application  
 | 
 
pHandled 
 | 
Returns whether the login could be handled by the DLL. 
 | 
 
 
 
  
  
Read More: 
  
 |