Consultor Eletrônico



Kbase P148140: 4GL/ABL: Can an ABL session create and maintain multiple CLIENT-PRINCIPAL objects?
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   17/06/2009
Status: Unverified

GOAL:

4GL/ABL: Can an ABL session create and maintain multiple CLIENT-PRINCIPAL objects?

GOAL:

Can an ABL session have multiple CLIENT-PRINCIPAL objects at the same time?

FACT(s) (Environment):

All Supported Operating Systems
OpenEdge 10.1x
OpenEdge 10.2x

FIX:

Yes, an ABL session can create and maintain multiple CLIENT-PRINCIPAL objects. And yes, the same ABL session can have multiple active CLIENT-PRINCIPAL objects.

The following 4GL/ABL procedure creates and maintains two CLIENT-PRINCIPAL objects. Although the example uses two distinct domains, multiple CLIENT-PRINCIPAL objects may be created and maintained using the same domain:

DEFINE VARIABLE pcUser AS CHARACTER NO-UNDO.
DEFINE VARIABLE gcDomainName AS CHARACTER NO-UNDO.
DEFINE VARIABLE gcDomainKey AS CHARACTER NO-UNDO.
DEFINE VARIABLE ghCP AS HANDLE NO-UNDO.
DEFINE VARIABLE ghCPB AS HANDLE NO-UNDO.
SECURITY-POLICY:LOAD-DOMAINS (LDBNAME(1)).
ASSIGN
pcUser = "jack"
gcDomainName = "DName"
gcDomainKey = "DCode".
/***Create first CLIENT-PRINCIPAL object***/
CREATE CLIENT-PRINCIPAL ghCP.
ASSIGN
ghCP:USER-ID = pcUser
ghCP:DOMAIN-NAME = gcDomainName
ghCP:SESSION-ID = SUBSTRING(BASE64-ENCODE(GENERATE-UUID),1,22).
ghCP:SEAL(gcDomainKey).
ghCP:VALIDATE-SEAL(gcDomainKey).
/***Create second CLIENT-PRINCIPAL object***/
ASSIGN
pcUser = "Jill"
gcDomainName = "EDName"
gcDomainKey = "EDCode".
CREATE CLIENT-PRINCIPAL ghCPB.
ASSIGN
ghCPB:USER-ID = pcUser
ghCPB:DOMAIN-NAME = gcDomainName
ghCPB:SESSION-ID = SUBSTRING(BASE64-ENCODE(GENERATE-UUID),1,22).
ghCPB:SEAL(gcDomainKey).
ghCPB:VALIDATE-SEAL(gcDomainKey).
MESSAGE
"Fisrt Client Principal LOGIN-STATE:~t" ghCP:LOGIN-STATE "~n"
"Fisrt Client Principal DOMAIN-NAME:~t" ghCP:DOMAIN-NAME "~n"
"Fisrt Client Principal AUTHENTICATION-FAILED:~t" ghCP:AUTHENTICATION-FAILED( )
VIEW-AS ALERT-BOX INFO BUTTONS OK.
MESSAGE
"Second Client Principal LOGIN-STATE:~t" ghCPB:LOGIN-STATE "~n"
"Second Client Principal DOMAIN-NAME:~t" ghCPB:DOMAIN-NAME "~n"
"Second Client Principal AUTHENTICATION-FAILED:~t" ghCPB:AUTHENTICATION-FAILED( )
VIEW-AS ALERT-BOX INFO BUTTONS OK.
QUIT.