[+dev]

On Tue, Jan 29, 2019 at 9:42 PM Senthalan Kanagalingam <sentha...@wso2.com>
wrote:

> Hi all,
>
> I have tried to change the authentication script to publish the event from
> it rather than our analytical event publisher to overcome the faced issue.
> Here is the script.
>
> function getPayload(context, isSucess) {
>   var username = '';
>   if (isSucess === true) {
>   username = context.currentKnownSubject.username;
>   }
>   var contextId = '12324232';
>   var timestamp = new Date().getTime();
>   var remoteIp = context.request.ip;
>   var payloadData = {
>   'username' : username,
>   'contextId' : contextId,
>   'authenticationSuccess' : isSucess,
>   '_timestamp' : timestamp,
>   'remoteIp' : remoteIp,
> 'eventType' : 'step'
> };
>   return payloadData;
> }
>
> function onLoginRequest(context) {
>     executeStep(1, {
>
>         onSuccess: function (context) {
>
>  var payloadData = getPayload(context, true);
>
>   httpPost('http://127.0.0.1:5000/publish', payloadData, {
>
> onSuccess : function(context, data) {
>
> Log.info('--------------- Received suspicious ' + data.suspicious);
>
> if (data.suspicious) {
>
>   executeStep(2);
>
> }
>
> }, onFail : function(context, data) {
>
> Log.info('--------------- Failed to call analytics engine');
>
> executeStep(2);
>
> }
>
>   });
>
>         }, onFail : function(context) {
>   var payloadData = getPayload(context, false);
>
>   httpPost('http://127.0.0.1:5000/publish', payloadData, {
>
> onSuccess : function(context, data) {
>
> Log.info('--------------- Data published ');
>
> }, onFail : function(context, data) {
>
> Log.info('--------------- Data publish failed');
>
> }
>
> });
>
> }
>
>     });
> }
>
> Here we can make the getPayload() as a function library function.
>
> To move the calling tensor flow part to the function library as well, I
> have tried the following. Because we can't return the result from the
> callback to the onLoginRequest function
>
> var stepNo;
> function getTensorFlowResult(context, stepUpNo) {
>   stepNo = stepUpNo;
>   var payloadData = getPayload(context, true);
>   httpPost('http://127.0.0.1:5000/publish', payloadData, {
> onSuccess : function(context, data) {
> Log.info('--------------- Received suspicious ' + data.suspicious);
> if (data.suspicious) {
>   executeStep(stepNo);
> }
> }, onFail : function(context, data) {
> Log.info('--------------- Failed to call analytics engine');
> executeStep(stepNo);
> }
> });
> }
>
> function publishToTensorFlow(context) {
>   var payloadData = getPayload(context, false);
>   httpPost('http://127.0.0.1:5000/publish', payloadData, {
> onSuccess : function(context, data) {
> Log.info('--------------- Data published ');
> }, onFail : function(context, data) {
> Log.info('--------------- Data publish failed');
> }
> });
> }
>
> function onLoginRequest(context) {
>     executeStep(1, {
>         onSuccess: function (context) {
>   getTensorFlowResult(context, 2);
>         }, onFail : function(context) {
>   publishToTensorFlow(context);
> }
>     });
> }
>
> But our script validation didn't activate the script as the executeStep(
> *2*) is not found in the script. So I think we can't make the TensorFlow
> calls as the functions library.
>
> Thanks and Regards,
> Senthalan
>
> On Mon, Jan 21, 2019 at 8:50 AM Dilin Dampahalage <di...@wso2.com> wrote:
>
>> Hi All,
>>
>> I was working on a personnel project about "Using Tensor Flow for an
>> Adaptive Authentication Scenario". The idea is to implement a suspicious
>> login detection framework using tensor flow and utilize it to prompt
>> additional authentication steps in adaptive authentication flow. Following
>> is the progress so far.
>>
>>
>>    - Simulated Identity Server authentication event stream and trained a
>>    Tensor Flow model to detect suspicious logins
>>    - Build a Python Flask based REST API to expose the model
>>    - Configured an event publisher in IS to publish data to the TF API
>>    - Detect suspicious logins (In the current model, if you
>>    consecutively failed to login to the Identity Server few times, and you
>>    login the next time, it is considered as a suspicious login)
>>
>>
>> As the next step I was trying to utilize the Tensor Flow model in a
>> conditional authentication script. But I was unable to get it working so
>> far. The problem is for some reason the event stream is getting published
>> after the conditional script query the TF API for a suspicious login.
>> Therefore the action for a suspicious login is taken in the next login.
>> Following is the conditional authentication script I used.
>>
>> function onLoginRequest(context) {
>>>
>>>     executeStep(1, {
>>>
>>>         onSuccess: function (context) {
>>>
>>>             var username = context.currentKnownSubject.username;
>>>
>>>   httpGet('http://127.0.0.1:5000/evaluate?username=' + username, {
>>>
>>>   onSuccess : function(context, data) {
>>>
>>>   Log.info('--------------- Received suspicious ' + data.suspicious);
>>>
>>>   if (data.suspicious) {
>>>
>>>     executeStep(2);
>>>
>>>   }
>>>
>>>   }, onFail : function(context, data) {
>>>
>>>   Log.info('--------------- Failed to call analytics engine');
>>>
>>>   }
>>>
>>>   });
>>>
>>>
>>>
>>>         }
>>>
>>>     });
>>>
>>> }
>>>
>>>
>>>
>> I would really appreciate your feedback and help on this.
>>
>> I have attached the event publisher and all the resources I used. You can
>> find the medium article I have written in [4].
>>
>> [1] git repo: https://github.com/dilin993/SuspiciousLoginDetection
>> [2] getting started with tensor flow:
>> https://www.tensorflow.org/tutorials/
>> [3] pandas documentation:
>> https://pandas.pydata.org/pandas-docs/stable/index.html
>> [4]
>> https://medium.com/@dilinlalindradampahalage/suspicious-login-detection-for-wso2-is-using-tensor-flow-introduction-a9070289fdd
>>
>> Thanks,
>> Dilin
>>
>> --
>>
>> *Dilin Dampahalage*
>> Software Engineer | WSO2
>>
>> Email : di...@wso2.com
>> Mobile : +94 771 462939
>> web : http://wso2.com
>>
>> <http://wso2.com/signature>
>>
>
>
> --
>
> *Senthalan Kanagalingam*
> *Software Engineer - WSO2 Inc.*
> *Mobile : +94 (0) 77 18 77 466*
> <http://wso2.com/signature>
>


-- 

*Senthalan Kanagalingam*
*Software Engineer - WSO2 Inc.*
*Mobile : +94 (0) 77 18 77 466*
<http://wso2.com/signature>
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to