This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
web-integration:c-sharp-example [2019/08/05 11:21] tjotov |
web-integration:c-sharp-example [2019/08/05 11:27] (current) tjotov |
||
---|---|---|---|
Line 2: | Line 2: | ||
C# relies on Web services for ADUCID - or WSA, see [[web-integration: | C# relies on Web services for ADUCID - or WSA, see [[web-integration: | ||
- | === Import WSDL into your project in Visual Studio. | + | Import WSDL into your project in Visual Studio. |
Create an instance of **AducidApiJsonServiceClient**. | Create an instance of **AducidApiJsonServiceClient**. | ||
Line 10: | Line 10: | ||
<sxh csharp> | <sxh csharp> | ||
- | System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12; | + | |
context.Response.ContentType = " | context.Response.ContentType = " | ||
Line 53: | Line 53: | ||
</ | </ | ||
- | 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; } | ||
- | } | ||
- | </ | ||
=== Create WSA proxy === | === Create WSA proxy === | ||
Just simple " | Just simple " | ||
<sxh csharp> | <sxh csharp> | ||
- | var aducid = new AducidApiJsonServiceClient(); | + | //We have to " |
- | string host = "http://" | + | |
- | var response = aducid.getStatus((string)context.Session[" | + | |
- | context.Response.ContentType = "text/plain"; | + | try |
- | context.Response.Write(response); | + | { |
+ | string query = context.Request.QueryString.ToString(); | ||
+ | var queryParsed = HttpUtility.ParseQueryString(query); | ||
+ | //get id from session based on GUID | ||
+ | var id = queryParsed["id"]; | ||
+ | //get response from AIM | ||
+ | | ||
+ | |||
+ | //send response to Web API | ||
+ | | ||
+ | } | ||
+ | catch (System.ServiceModel.FaultException e) | ||
+ | { | ||
+ | | ||
+ | var msgFault = e.CreateMessageFault(); | ||
+ | var errorResult = msgFault.GetDetail< | ||
+ | //get error as JSON | ||
+ | var response = aducid.toErrorJson(errorResult, | ||
+ | // | ||
+ | | ||
+ | } | ||
</ | </ | ||
Line 79: | Line 89: | ||
<sxh csharp> | <sxh csharp> | ||
- | var aducid = new AducidApiJsonServiceClient(); | + | |
- | //read authId from you session | + | |
- | string authId = (string)context.Session[" | + | var queryParsed = HttpUtility.ParseQueryString(query); |
- | var aducidResult = aducid.getResult(authId, | + | var id = queryParsed[" |
- | //parse json | + | |
- | dynamic aducidResultObj = JsonConvert.DeserializeObject(aducidResult); | + | string authId = (string)context.Session[id]; |
- | // | + | context.Response.ContentType = "application/ |
- | var udi = aducidResultObj.data.userDatabaseIndex; | + | try |
- | //key to further ADUCID operetions on user object | + | { |
- | string | + | //call AIM to get operation result |
- | //prepare response | + | |
- | var response = aducid.endAuthenticationSession(authId, | + | // |
- | context.Response.ContentType = "text/plain"; | + | var udi = aducidResult.userDatabaseIndex; |
- | //OK do something with your session | + | //authKey |
- | //... | + | |
- | //send response | + | //finalize authentication and get respoonse form Web API |
- | context.Response.Write(response); | + | var response = aducid.endAuthenticationSession(authId, |
+ | // | ||
+ | FormsAuthentication.SetAuthCookie(" | ||
+ | //send Web API the result - by default it will redirect to URI we provided earlier; for iOS PEIG opens this URI directly | ||
+ | | ||
+ | } | ||
+ | catch (System.ServiceModel.FaultException e) | ||
+ | { | ||
+ | | ||
+ | var msgFault = e.CreateMessageFault(); | ||
+ | var errorResult = msgFault.GetDetail< | ||
+ | //get error as JSON | ||
+ | var response | ||
+ | //send JSON to Web API | ||
+ | context.Response.Write(response); | ||
+ | } | ||
</ | </ | ||
=== Prepare a web page === | === Prepare a web page === | ||
- | This page should contain [[integration-api:start|ADUCID Integration | + | This page should contain [[web-integration:client-side|Client |
Provide start, check and proxy Url. | Provide start, check and proxy Url. | ||
- | < | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
Override what should be done after authentication / operation: | Override what should be done after authentication / operation: | ||
- | <sxh> | + | < |
- | | + | <script type=" |
+ | var aducid = new ADUCID(); | ||
+ | |||
+ | $(document).ready(function () { | ||
+ | aducid.setAuthentication(); | ||
+ | //operation start URL | ||
+ | aducid.setStartOperationUrl(" | ||
+ | //operation check URL | ||
+ | aducid.setResultOperationUrl(" | ||
+ | //proxy helper URL | ||
+ | aducid.setProxyUrl(" | ||
+ | |||
+ | //text under QR code | ||
+ | aducid.showQRHint = function (param) { | ||
+ | $('# | ||
+ | } | ||
+ | |||
+ | //running operation texr | ||
+ | aducid.showRunningHint = function (param) { | ||
+ | $('# | ||
+ | } | ||
+ | |||
+ | //called when auth finished (except iOS) | ||
+ | | ||
+ | alert(" | ||
if (result.status == " | if (result.status == " | ||
- | | + | location.href = result.redirect; |
- | //location.reload(); | + | |
} | } | ||
else { | else { | ||
- | | + | |
} | } | ||
} | } | ||
+ | |||
+ | //handle PEIG not installed error | ||
+ | aducid.showPeigError = function () { | ||
+ | showDialog(" | ||
+ | location.reload(); | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | //handle communication or other error | ||
+ | aducid.handleError = function (result) { | ||
+ | showDialog(" | ||
+ | location.href = result.redirect; | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | //GUI mapping | ||
+ | //button associated to start auth | ||
+ | aducid.setButton($("# | ||
+ | //locatino of QR code img | ||
+ | aducid.setQrCode($("# | ||
+ | //location of text under QR code | ||
+ | aducid.setQrHint($("# | ||
+ | |||
+ | //start; false as we wait for button click or qr scan | ||
+ | aducid.init(false); | ||
+ | }); | ||
+ | </ | ||
</ | </ | ||
Line 123: | Line 193: | ||
<sxh html> | <sxh html> | ||
- | < | + | <div class=" |
+ | | ||
<div class=" | <div class=" | ||
<div class=" | <div class=" | ||
Line 149: | Line 220: | ||
</ | </ | ||
</ | </ | ||
+ | </ | ||
</ | </ |