OneSpan Sign Release 11.28: SDK Enhancement and Other Updates
OneSpan Sign version 11.28 was recently deployed to the preview and sandbox environment. You can find the deployment dates for all our environments on our Trust Center page.
In this blog, we’ll introduce and explore the major updates to OneSpan Sign, starting with the recent enhancements in SDK and then walking through other important changes in production behavior. Through this blog, you’ll gain a thorough understanding of what is available in the new version.
SDK - Retrieve Package IDs only
Though we have showcased the API extension in a previous blog, this feature is now also available in both .Net and Java SDK with the release of 11.28. Please make sure your SDK version is contemporaneous or later than 11.28 to make use of this feature.
Java SDK
In 11.28 there is also a new function added to the PackageService class. See below:
public com.silanis.esl.sdk.Page<Map<String, String>> getPackagesFields(PackageStatus status, PageRequest request, Set<String> fields)
This function returns to the user a Page object containing a List of Map types. Let’s have a look at the member fields in Page class:
public class Page<T> implements Iterable<T> { private final PageRequest request; private int totalElements; private List<T> results; …… }
Currently, each Map only has one entry that is “id”:”{packageID}”. In future upgrades, when other fields other than ID can be returned by API, there’ll be more entries injected.
Let’s see some sample code retrieving all your completed package IDs:
int totalNum = 0; int curNum = 0; PageRequest pageRequest = new PageRequest(1, 100); do { Page<Map<String, String>> packages = eslClient.getPackageService().getPackagesFields(PackageStatus.COMPLETED, pageRequest, Sets.newHashSet("id")); totalNum = totalNum == 0 ? packages.getTotalElements() : totalNum; curNum += packages.getNumberOfElements(); pageRequest = pageRequest.next(); List<Map<String,String>> results = packages.getResults(); for (Map<String, String> map : results) { String packageId = map.get("id"); System.out.println(packageId); } } while (curNum < totalNum);
.NET SDK
Similarly, a new function was added to PackageService class:
public Page<Dictionary<String, String>> GetPackagesFields (DocumentPackageStatus status, PageRequest request, ISet<String> fields)
To retrieve all available completed packages, use the sample code below:
int totalNum = 0; int curNum = 0; PageRequest pageRequest = new PageRequest(1, 100); do { Page<Dictionary<String, String>> packages = eslClient.PackageService.GetPackagesFields(DocumentPackageStatus.COMPLETED, pageRequest, new HashSet<String>() { "id" }); totalNum = totalNum == 0 ? packages.TotalElements : totalNum; curNum += packages.NumberOfElements; pageRequest = pageRequest.Next; IList<Dictionary<String, String>> results = packages.Results; foreach (var map in results) { String packageId = map["id"]; Debug.WriteLine(packageId); } } while (curNum < totalNum);
Signer Lock Event
Auto-unlock a signer in KBA
After 11.28, there will be a new account level setting defining whether to auto-unlock signers who have been locked out of signing due to multiple failure attempts.
You need to contact our support team to have this new feature enabled. What’s more, the unlock period is configurable, default by 72 hours and available from 1 hour up to 360 hours.
To note, you can still use the API Call or Web Portal to manually unlock a signer with this new feature turned on.
Two More Events in the Audit Trail
Another enhancement in KBA is the addition of two more events, "Recipient Locked" and "Recipient Unlocked", to the Evidence Summary.
The "Recipient Locked" event is triggered when a recipient gets locked out due to multiple failed authentication attempts.
The "Recipient Unlocked" event is triggered when a sender unlocks a recipient after they have been locked out due to multiple failed authentication attempts.
If you have any questions regarding this blog or anything else concerning integrating OneSpan Sign into your application, visit the Developer Community Forums. Your feedback matters to us!