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:04]
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(); 
 +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";
  
-            string query context.Request.QueryString.ToString(); +//JSON response from WSA 
-            var queryParsed HttpUtility.ParseQueryString(query); +var response aducid.startAuthenticationSession(JsonConvert.SerializeObject(arg)); 
-            var generateQr = queryParsed["generateQrCodePicture"]+//parse and store authId 
-            var arg new OperationArgument(); +dynamic responseObj JsonConvert.DeserializeObject(response); 
-            arg.peigReturnName host + "/result"; +//store authId in your session 
-            arg.qrCodePictureHeight = 300; +context.Session["123"] = (stringresponseObj.data.authId
-            arg.qrCodePictureWidth = 300; +context.Response.ContentType = "text/plain"; 
-            arg.id = "123"+//send response 
-            arg.generateQrCodePicture = generateQr == "true";+context.Response.Write(response)
 +</sxh>
  
-            var response = aducid.startAuthenticationSession(JsonConvert.SerializeObject(arg)); +OperationArgument is a simple object 
-            dynamic responseObj JsonConvert.DeserializeObject(response);+<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>
  
-            Console.WriteLine(responseObj.data.authId); +=== Create check Url === 
-            context.Session["123"(string) responseObj.data.authId; +On the result page we evaluate the authentication 
-            context.Response.ContentType "text/plain"; +There are two basic results – authentication is OK or an error is thrown:
-            context.Response.Write(response); +
-} +
-</code>+
  
-=== Create check result Url ===+<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>
  
-On the result page we evaluate the authentication request using aducid.getResult 
  
-There are two basic results – authentication is OK or an error is thrown:+=== 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> 
  
-<code csharp> +And create some HTML elements:
-protected void Page_Load(object sender, EventArgs e) +
-        { +
-            var queryString = HttpContext.Current.Request.Url.Query; +
-            var query = HttpUtility.ParseQueryString(queryString);+
  
-            var sb = new StringBuilder(); +<sxh html
-            var aducid = new AducidApiServiceClient(); +<h1>ADUCID Hello World example</h1
-            try +        <div class="row"> 
-            { +            <div class="col-xs-8 col-xs-offset-2">
-                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>");+                <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"> 
-            catch (Exception ee) +                    <div id="qr-code-timer" class="qr-code-timer img-responsive center-block"></div
-            { +                    <div id="qr-code-hintclass="qr-code-hint"></div> 
-                sb.Append("Error:+ ee.Message); +                </div>
-            } +
-            lResponse.Text sb.ToString(); +
-        } +
-</code+
- +
- +
-=== Prepare a web page ==+
-This page should contain [[integration-api:start|ADUCID Integration API]]\\ +
-Provide start, check and proxy Url.  +
- aducid.setStartOperationUrl("myOpen"); +
- aducid.setResultOperationUrl("myPpenCheck"); +
- aducid.setProxyUrl("myProxy");+
  
 +                <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>