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/27 14:06]
tjotov
developers:integration:wsa [2019/08/01 10:07]
tjotov removed
Line 4: Line 4:
   * [[developers:basic-overview|Server side integration basics]]   * [[developers:basic-overview|Server side integration basics]]
   * [[integration-api:start|ADUCID Integration API]]   * [[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 26: Line 26:
 === Import WSDL into your project in Visual Studio. === === Import WSDL into your project in Visual Studio. ===
  
-Create an instance of **AducidApiServiceClient **.+Create an instance of **AducidApiJsonServiceClient**.
  
 === Create a start operation Url === === Create a start operation Url ===
 This page starts authentication request. This page starts authentication request.
  
-<code csharp>+<sxh csharp>
 var aducid = new AducidApiJsonServiceClient(); var aducid = new AducidApiJsonServiceClient();
 string host = "http://" + HttpContext.Current.Request.Url.Host + ":" + HttpContext.Current.Request.Url.Port; string host = "http://" + HttpContext.Current.Request.Url.Host + ":" + HttpContext.Current.Request.Url.Port;
- 
 string query = context.Request.QueryString.ToString(); string query = context.Request.QueryString.ToString();
 var queryParsed = HttpUtility.ParseQueryString(query); var queryParsed = HttpUtility.ParseQueryString(query);
 var generateQr = queryParsed["generateQrCodePicture"]; var generateQr = queryParsed["generateQrCodePicture"];
 var arg = new OperationArgument(); var arg = new OperationArgument();
 +//return URL for iOS
 arg.peigReturnName = host + "/result"; arg.peigReturnName = host + "/result";
 +//QR code picture size
 arg.qrCodePictureHeight = 300; arg.qrCodePictureHeight = 300;
 arg.qrCodePictureWidth = 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.id = "123";
 arg.generateQrCodePicture = generateQr == "true"; arg.generateQrCodePicture = generateQr == "true";
  
 +//JSON response from WSA
 var response = aducid.startAuthenticationSession(JsonConvert.SerializeObject(arg)); var response = aducid.startAuthenticationSession(JsonConvert.SerializeObject(arg));
 +//parse and store authId
 dynamic responseObj = JsonConvert.DeserializeObject(response); dynamic responseObj = JsonConvert.DeserializeObject(response);
- +//store authId in your session
-Console.WriteLine(responseObj.data.authId);+
 context.Session["123"] = (string) responseObj.data.authId; context.Session["123"] = (string) responseObj.data.authId;
 context.Response.ContentType = "text/plain"; context.Response.ContentType = "text/plain";
 +//send response
 context.Response.Write(response); context.Response.Write(response);
-</code>+</sxh>
  
-=== Create check result Url === +OperationArgument is a simple object 
- +<sxh csharp> 
-On the result page we evaluate the authentication request using aducid.getResult+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: There are two basic results – authentication is OK or an error is thrown:
  
-<code csharp> +<sxh csharp> 
-protected void Page_Load(object sender, EventArgs e+var aducid = new AducidApiJsonServiceClient(); 
-        { +//read authId from you session 
-            var queryString HttpContext.Current.Request.Url.Query+string authId (string)context.Session["123"]
-            var query HttpUtility.ParseQueryString(queryString); +var aducidResult aducid.getResult(authId, null); 
- +//parse json 
-            var sb new StringBuilder(); +dynamic aducidResultObj JsonConvert.DeserializeObject(aducidResult); 
-            var aducid new AducidApiServiceClient(); +//User primary key i.e. UDI 
-            try +var udi aducidResultObj.data.userDatabaseIndex; 
-            { +//key to further ADUCID operetions on user object (with authId) 
-                var result = aducid.getResult(query.Get("authId")query.Get("authkey")); +string authKey2 = aducidResultObj.data.authKey2
-                sb.Append("<table class=\"table table-bordered\">")+//prepare response 
-                sb.Append("<tr><td>authId:</td><td>" + result.authId + "</td></tr>"); +var response = aducid.endAuthenticationSession(authId, authKey2); 
-                sb.Append("<tr><td>authKey:</td><td>" + result.authKey + "</td></tr>"); +context.Response.ContentType = "text/plain"; 
-                sb.Append("<tr><td>operationName:</td><td>" + result.operationName + "</td></tr>"); +//OK do something with your session 
-                sb.Append("<tr><td>UDI:</td><td>" + result.userDatabaseIndex + "</td></tr>"); +//..
-                sb.Append("<tr><td>Status AIM:</td><td>" + result.statusAIM + "</td></tr>"); +//send response 
-                sb.Append("<tr><td>Status auth:</td><td>" + result.statusAuth + "</td></tr>");+context.Response.Write(response); 
 +</sxh>
  
-                sb.Append("</table>"); 
  
 +=== 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");
 +                }
             }             }
-            catch (Exception ee) +</sxh
-            { +
-                sb.Append("Error:" + ee.Message); +
-            } +
-            lResponse.Text = sb.ToString(); +
-        } +
-</code>+
  
 +And create some HTML elements:
  
-=== Prepare a web page === +<sxh html> 
-This page should contain [[integration-api:start|ADUCID Integration API]]\\ +<h1>ADUCID Hello World example</h1> 
-Provide start, check and proxy Url.  +        <div class="row"> 
- aducid.setStartOperationUrl("myOpen"); +            <div class="col-xs-8 col-xs-offset-2"> 
- aducid.setResultOperationUrl("myPpenCheck"); + 
- aducid.setProxyUrl("myProxy");+                <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-hintclass="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>