User Tools

Site Tools


developers:integration:wsa

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
developers:integration:wsa [2018/06/26 14:23]
tjotov
developers:integration:wsa [2019/08/01 10:07]
tjotov removed
Line 1: Line 1:
 ====== Using ADUCID web service “WSA” ====== ====== Using ADUCID web service “WSA” ======
  
-See [[developers:basic-overview|Server side integration basics]]+See 
 +  * [[developers:basic-overview|Server side integration basics]] 
 +  * [[integration-api:start|ADUCID Integration API]]
  
 For detailed methods / classes / types description see [[http://wiki.aducid.com/client-api|Javadoc SDK Client API]] For detailed methods / classes / types description see [[http://wiki.aducid.com/client-api|Javadoc SDK Client API]]
Line 10: Line 12:
  
 <code> <code>
-https://hostname/wsa+https://hostname/wsa-json
 </code> </code>
  
Line 16: Line 18:
  
 <code> <code>
-https://hostname/wsa?wsdl+https://hostname/wsa-json?wsdl
 </code> </code>
  
-See basic examples in C# and PHP using WSA web service 
  
-  * [[developers:examples:c-sharp:basic|C#]] +====== C# Example ======
-  * [[developers:examples:php:basic|PHP]]+
  
 +=== Import WSDL into your project in Visual Studio. ===
  
 +Create an instance of **AducidApiJsonServiceClient**.
 +
 +=== Create a start operation Url ===
 +This page starts authentication request.
 +
 +<sxh csharp>
 +var aducid = new AducidApiJsonServiceClient();
 +string host = "http://" + HttpContext.Current.Request.Url.Host + ":" + HttpContext.Current.Request.Url.Port;
 +string query = context.Request.QueryString.ToString();
 +var queryParsed = HttpUtility.ParseQueryString(query);
 +var generateQr = queryParsed["generateQrCodePicture"];
 +var arg = new OperationArgument();
 +//return URL for iOS
 +arg.peigReturnName = host + "/result";
 +//QR code picture size
 +arg.qrCodePictureHeight = 300;
 +arg.qrCodePictureWidth = 300;
 +//tab helper If - if more authentication are in web browser in more tabs this help ti identify them - has to be unique
 +arg.id = "123";
 +arg.generateQrCodePicture = generateQr == "true";
 +
 +//JSON response from WSA
 +var response = aducid.startAuthenticationSession(JsonConvert.SerializeObject(arg));
 +//parse and store authId
 +dynamic responseObj = JsonConvert.DeserializeObject(response);
 +//store authId in your session
 +context.Session["123"] = (string) responseObj.data.authId;
 +context.Response.ContentType = "text/plain";
 +//send response
 +context.Response.Write(response);
 +</sxh>
 +
 +OperationArgument is a simple object
 +<sxh csharp>
 +public class OperationArgument
 +    {
 +        public String peigReturnName { get; set; }
 +        public int qrCodePictureHeight { get; set; }
 +        public int qrCodePictureWidth { get; set; }
 +        public String id { get; set; }
 +        public Boolean generateQrCodePicture { get; set; }
 +    }
 +</sxh>
 +=== Create WSA proxy ===
 +Just simple "Rewrite" from WSA to C# with authId check
 +<sxh csharp>
 +var aducid = new AducidApiJsonServiceClient();
 +string host = "http://" + HttpContext.Current.Request.Url.Host + ":" + HttpContext.Current.Request.Url.Port;
 +var response = aducid.getStatus((string)context.Session["123"]);
 +context.Response.ContentType = "text/plain";
 +context.Response.Write(response);
 +</sxh>
 +
 +=== Create check Url ===
 +On the result page we evaluate the authentication
 +There are two basic results – authentication is OK or an error is thrown:
 +
 +<sxh csharp>
 +var aducid = new AducidApiJsonServiceClient();
 +//read authId from you session
 +string authId = (string)context.Session["123"];
 +var aducidResult = aducid.getResult(authId, null);
 +//parse json
 +dynamic aducidResultObj = JsonConvert.DeserializeObject(aducidResult);
 +//User primary key i.e. UDI
 +var udi = aducidResultObj.data.userDatabaseIndex;
 +//key to further ADUCID operetions on user object (with authId)
 +string authKey2 = aducidResultObj.data.authKey2;
 +//prepare response
 +var response = aducid.endAuthenticationSession(authId, authKey2);
 +context.Response.ContentType = "text/plain";
 +//OK do something with your session
 +//...
 +//send response
 +context.Response.Write(response);
 +</sxh>
 +
 +
 +=== Prepare a web page ===
 +This page should contain [[integration-api:start|ADUCID Integration API]]\\
 +Provide start, check and proxy Url.
 +<sxh> 
 +   aducid.setStartOperationUrl("open");
 +   aducid.setResultOperationUrl("openCheck");
 +   aducid.setProxyUrl("proxy");
 +</sxh>
 +Override what should be done after authentication / operation:
 +<sxh> 
 +   aducid.processResult = function (result) {
 +                if (result.status == "OK") {
 +                    alert("atuhenticated");
 +                    //location.reload();
 +                }
 +                else {
 +                    alert("atuhentication failure");
 +                }
 +            }
 +</sxh> 
 +
 +And create some HTML elements:
 +
 +<sxh html>
 +<h1>ADUCID Hello World example</h1>
 +        <div class="row">
 +            <div class="col-xs-8 col-xs-offset-2">
 +
 +                <div class="row">
 +                    <div class="col-xs-8 col-xs-offset-2">
 +                        <div id="main-button" class="btn btn-primary btn-lg center-block">Authenticate</div>
 +                    </div>
 +                </div>
 +                <div class="row">
 +                    <img id="qr-code" alt="" class="img-responsive center-block" />
 +                </div>
 +
 +                <div class="row text-center">
 +                    <div id="qr-code-timer" class="qr-code-timer img-responsive center-block"></div>
 +                    <div id="qr-code-hint" class="qr-code-hint"></div>
 +                </div>
 +
 +                <div id="peig-error" style="display: none;">
 +                    <h2>PEIG Error</h2>
 +                    <a class='btn  btn-lg' href='http://www.aducid.com/support/' data-lang="aducid_common_installPeig">Install PEIG</a>
 +                    <br />
 +                    <div class='btn btn-lg' onclick="location.reload()" data-lang="aducid_common_tryAgain">Try again</div>
 +                </div>
 +            </div>
 +        </div>
 +</sxh>