Server API
You can implement server matching features with Server API. With server matching enabled, the device will defer the authentication process to the device gateway. Whenever a user places a card or fingerprint on the device, it will send a request to the gateway. Then, you have to handle these requests using one of the APIs.
To implement server matching, you have to do the following steps.
-
Enable the related options.
Function Option Handler Verify AuthConfig.useServerMatching HandleVerify Identify AuthConfig.useServerMatching HandleIdentify Global APB AuthConfig.useGlobalAPB HandleGlobalAPB User Phrase DisplayConfig.useUserPhrase/queryUserPhrase HandleUserPhrase - Subscribe to the request channel using Subscribe.
- Implement your own logic using the corresponding handler.
- Unsubscribe from the channel using Unsubscribe
Server API is not supported by the master gateway.
Subscribe
If subscription is successful, devices will send the following requests to the device gateway.
message ServerRequest {
RequestType reqType;
uint32 deviceID;
uint32 seqNO;
VerifyRequest verifyReq;
IdentifyRequest identifyReq;
GlobalAPBRequest globalAPBReq;
UserPhraseRequest userPhraseReq;
}
- reqType
- The type of the request.
- deviceID
- The ID of the device, which sent the request.
- seqNO
- The sequence number of the request. You have to use this number when returning a response to the device.
- verifyReq
- Valid only if the reqType is VERIFY_REQUEST.
- identifyReq
- Valid only if the reqType is IDENTIFY_REQUEST.
- globalAPBReq
- Valid only if the reqType is GLOBAL_APB_REQUEST.
- userPhraseRequest
- Valid only if the reqType is USER_PHRASE_REQUEST.
enum RequestType {
NO_REQUEST = 0x00;
VERIFY_REQUEST = 0x01;
IDENTIFY_REQUEST = 0x02;
GLOBAL_APB_REQUEST = 0x03;
USER_PHRASE_REQUEST = 0x04;
}
message VerifyRequest {
bool isCard;
card.Type cardType;
bytes cardData;
string userID;
}
- isCard
- If true, you have to look up cardType and cardData for the verification. If false, you have to look up userID.
message IdentifyRequest {
finger.TemplateFormat templateFormat;
bytes templateData;
}
message GlobalAPBRequest {
repeated string userIDs;
}
message UserPhraseRequest {
string userID;
}
Handling of the requests varies according to the programming language. Refer to the server API example in your client SDK.
Subscribe
Request |
Parameter | Type | Description |
---|---|---|
queueSize | int32 | If the queue is full, the gateway will discard the requests. It should be large enough for handling concurrent requests |
Unsubscribe
There can be only one channel. So, if you want to reuse the channel, you have to unsubscribe from it first.
Matching
HandleVerify
With AuthConfig.useServerMatching true, the device will send a VerifyRequest to the gateway when it reads a card. You have to send a response to the device using this API.
Request |
Parameter | Type | Description |
---|---|---|
deviceID | uint32 | The ID of the device. It should be same as deviceID in the request. |
seqNO | uint32 | The sequence number of the response. It should be same as seqNO in the corresponding request. |
errCode | ServerErrorCode | The result of verification. If it is SUCCESS, you have to fill the verified user information in user field. |
user | user.UserInfo | The information of the verified user. |
enum ServerErrorCode {
SUCCESS = 0;
VERIFY_FAIL = -301;
IDENTIFY_FAIL = -302;
HARD_APB_VIOLATION = -1202;
SOFT_APB_VIOLATION = -1203;
CANNOT_FIND_USER = -714;
}
HandleIdentify
With AuthConfig.useServerMatching true, the device will send an IdentifyRequest to the gateway when it reads a fingerprint. You have to send a response to the device using this API.
Request |
Parameter | Type | Description |
---|---|---|
deviceID | uint32 | The ID of the device. It should be same as deviceID in the request. |
seqNO | uint32 | The sequence number of the response. It should be same as seqNO in the corresponding request. |
errCode | ServerErrorCode | The result of identification. If it is SUCCESS, you have to fill the identified user information in user field. |
user | user.UserInfo | The information of the identified user. |
HandleGlobalAPB
With AuthConfig.useGlobalAPB true, the device will send a GlobalAPBRequest to the gateway after successful authentication.
Request |
Parameter | Type | Description |
---|---|---|
deviceID | uint32 | The ID of the device. It should be same as deviceID in the request. |
seqNO | uint32 | The sequence number of the response. It should be same as seqNO in the corresponding request. |
errCode | ServerErrorCode | The result of anti passback violation. If violated, the result will be either HARD_APB_VIOLATION or SOFT_APB_VIOLATION based on the type of zone. |
zoneID | uint32 | The ID of the anti passback zone. |
User interface
Apart from server matching, you can also show a user-specific message after authentication.
HandleUserPhrase
With DisplayConfig.useUserPhrase/queryUserPhrase true, the device will send a UserPhraseRequest after successful authentication. You have to send a response to the device using this API.
Request |
Parameter | Type | Description |
---|---|---|
deviceID | uint32 | The ID of the device. It should be same as deviceID in the request. |
seqNO | uint32 | The sequence number of the response. It should be same as seqNO in the corresponding request. |
errCode | ServerErrorCode | If it is SUCCESS, you have to send the user phrase in userPhrase field. |
userPhrase | string | The message to be displayed in the UI of the device. |