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/27 14:06]
tjotov
developers:integration:wsa [2018/11/12 13:02]
mpospisek [C# Example]
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>