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:07]
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 31: Line 31:
 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>
  
 OperationArgument is a simple object OperationArgument is a simple object
-<code csharp>+<sxh csharp>
 public class OperationArgument public class OperationArgument
     {     {
Line 64: Line 68:
         public Boolean generateQrCodePicture { get; set; }         public Boolean generateQrCodePicture { get; set; }
     }     }
-</code+</sxh
-=== Create check result Url === +=== Create WSA proxy === 
- +Just simple "Rewrite" from WSA to C# with authId check 
-On the result page we evaluate the authentication request using aducid.getResult+<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 senderEventArgs 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(authIdnull); 
 +//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>
  
-            var sb = new StringBuilder(); 
-            var aducid = new AducidApiServiceClient(); 
-            try 
-            { 
-                var result = aducid.getResult(query.Get("authId"), query.Get("authkey")); 
-                sb.Append("<table class=\"table table-bordered\">"); 
-                sb.Append("<tr><td>authId:</td><td>" + result.authId + "</td></tr>"); 
-                sb.Append("<tr><td>authKey:</td><td>" + result.authKey + "</td></tr>"); 
-                sb.Append("<tr><td>operationName:</td><td>" + result.operationName + "</td></tr>"); 
-                sb.Append("<tr><td>UDI:</td><td>" + result.userDatabaseIndex + "</td></tr>"); 
-                sb.Append("<tr><td>Status AIM:</td><td>" + result.statusAIM + "</td></tr>"); 
-                sb.Append("<tr><td>Status auth:</td><td>" + result.statusAuth + "</td></tr>"); 
- 
-                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>