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
Next revision Both sides next revision
developers:integration:wsa [2018/06/26 14:23]
tjotov
developers:integration:wsa [2018/11/12 13:02]
mpospisek [C# Example]
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>