Search code examples
authorizationibm-mobilefirstworklight-adaptersworklight-serveruser-identification

Worklight adapter: basic authentication. How can I set that all my adapters send the activeUser credentials in header of every procedure?


I have a login page in Worklight that sets the active user on the worklight server. This sets a userIdentity. In this userIdentity I save an encrypted string of 'username:password'.

Every time an adapterprocedure is called it tests if a user is logged in. When he is logged in, the procedure is called.

In the back-end I use basic authentication for every REST call. So I need in every call's header ->

    Authorization: Basic  encrypted(username:password)

When I mock this, everything works. Example ->

    var input = {
    method : 'get',
    returnedContentType : 'json',
    path : path,
     headers:{
            Authorization: "Basic "+"dGVzdDp0ZXN0"
        }

I need to set, that everytime a procedure is called, this 'username:password' is the username:password from the userIdentity of the user that is logged in in the worklightserver.

How can I do this?


Authorizing HTTP Adapter in IBM Worklight

Here they use $( username ), but I don't know where the $ sign is referring to.


Solution

  • I do not think it is the best way, but it works for me...

    wheb setting a userIdentity i added a loginString in the user object. this object contains a var credentials that i initiated in the login-adapter.

    loginstring = encode.encode_base64(user:pass);

    userIdentity = {

        userID:"01",
        displayName: "name",
        credentials:loginstring, 
        teacherId:"212",
    

    }

    WL.Server.setActiveUser("AuthRealm", userIdentity);

    Then in the adapter you can reach the userIdentity-object:

    function get() {

    var user = WL.Server.getActiveUser("AuthRealm");
    var input = {
        method : 'get',
        returnedContentType : 'json',
        headers:{
            Authorization: "Basic " + user.credentials
        },
        path : 'path',
    };
    

    return WL.Server.invokeHttp(input); }