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/11/12 13:02]
mpospisek [C# Example]
— (current)
Line 1: Line 1:
-====== Using ADUCID web service “WSA” ====== 
  
-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]] 
- 
-WSA is meant for all platforms like PHP, C# **except** Java (Java is also possible but we provide a full module so WSDL import is redundant). 
- 
-Web service is a standalone “application” which must be deployed on same server as AIM. Its default address is like this: 
- 
-<​code>​ 
-https://​hostname/​wsa-json 
-</​code>​ 
- 
-There you will see WSA Interface homepage where you can download WSDL file to generate client. 
- 
-<​code>​ 
-https://​hostname/​wsa-json?​wsdl 
-</​code>​ 
- 
- 
-====== C# Example ====== 
- 
-=== 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>​ 
  • developers/integration/wsa.1542027757.txt.gz
  • Last modified: 2018/11/12 13:02
  • by mpospisek