Enroll methods¶
-
class
aucore.au.ap.virtual_password.VPEnrollProcess(policy)¶ Error reasons:
- PASSWORD_BAD_CONFIRMATION
- PASSWORD_EMPTY
- PASSWORD_UNCHANGED
- PASSWORD_TOO_SHORT
- PASSWORD_TOO_SIMPLE
-
class
aucore.au.ap.virtual_password.EmergPasswordEnrollProcess(policy)¶
-
class
aucore.au.ap.ldap_password.LdapEnrollProcess¶
-
class
aucore.au.ap.messaging_otp.MessagingOTPEnrollProcess¶
-
class
aucore.au.ap.otp.TotpEnrollProcess(policy)¶ Error reasons:
- TOTP_SCAN_QR
-
class
aucore.au.ap.otp.HotpEnrollProcess(policy)¶ Remember user device (smartphone etc.) HOTP secret and algoritm parameters
-
class
aucore.au.ap.radius.RadiusEnrollProcess¶
-
class
aucore.au.ap.sec_quest.SecQuestEnrollProcess(policy)¶ Error reasons:
- SECQUEST_WAITING_ANSWERS
-
class
aucore.au.ap.u2f.U2fEnrollProcess(policy)¶ Error reasons:
- U2F_WAITING_REG_RESPONSE
- U2F_NOT_ATTESTED
NOTE: U2F AP uses camelCasing for parameters. Chrome JS-API (u2f.js) uses this scheme. You simply forward objects such as SignRequest to/from AP and JS-API.
Example of enrollment
Create enroll process (login before that and use login_session_id):
POST /api/v1/enroll { 'login_session_id': 'WXogCpZcHlsGsmmYiXkcxbg1qJMHJ4eD', 'method_id': 'U2F:1' } Return: { 'enroll_process_id': 'hn0k1pTx1T6MQwOIbhBPUlLIopROig4Q' }Ask server for registerRequests:
POST /api/v1/enroll/hn0k1pTx1T6MQwOIbhBPUlLIopROig4Q/do_enroll { 'login_session_id': 'WXogCpZcHlsGsmmYiXkcxbg1qJMHJ4eD', 'response': { 'userId': 'b133a41c092e11e5873d000c294fde0e', # send userName or userId, #'userName': 'LOCAL\user1', # not both 'appId': 'https://demo.yubico.com' # maybe omitted, server will use default appId (VENDOR name) # if you use browser u2f-api, pass https://<server_name> } } Return: { 'method_id': 'U2F:1', 'msg': 'Waiting register response', 'reason': 'U2F_WAITING_REG_RESPONSE', 'registerRequests': [ { 'appId': 'https://demo.yubico.com', 'challenge': 'Ij3TTvLi3H-oWNA18BDeIp_p1zN5bkzPipjQeuIbntQ', 'version': 'U2F_V2'}], 'signRequests': [], 'status': 'MORE_DATA' }Forward registerRequests and signRequests to JSAPI (u2f.register), get registerResponse and forward to server:
POST /api/v1/enroll/hn0k1pTx1T6MQwOIbhBPUlLIopROig4Q/do_enroll { 'login_session_id': 'WXogCpZcHlsGsmmYiXkcxbg1qJMHJ4eD', 'response': { 'registerResponse': { 'clientData': 'eyJ0eXAiOiJuYXZpZ2F0b3IuaWQuZmluaXNoRW5yb2xsbWVudCIsImNoYWxsZW5nZSI6IjFNX2hrbkxka0Ixb1hySFQxWUZqSHA5NDRpT2w4N2kwd1B5UUV0MW5DYzQiLCJvcmlnaW4iOiJodHRwczovL2RlbW8ueXViaWNvLmNvbSIsImNpZF9wdWJrZXkiOiIifQ', 'registrationData': 'BQQ_jNAqemWkTfI9uL4CVo3eQSNIMe66u-pasr8BMuu9maA764C7jDPqXMUWhw8_4tDxeUbM72VJH5fssT6F2vT5QKheRH3Tk0hCuJD94ZRHf0Nkg-JDmLOivamSUeVXvRJaBLOp7N-hhxvoxlChQ-CSzMDqrC7EZ7IqWvl7Ac3xejswggIcMIIBBqADAgECAgRyWMLqMAsGCSqGSIb3DQEBCzAuMSwwKgYDVQQDEyNZdWJpY28gVTJGIFJvb3QgQ0EgU2VyaWFsIDQ1NzIwMDYzMTAgFw0xNDA4MDEwMDAwMDBaGA8yMDUwMDkwNDAwMDAwMFowKzEpMCcGA1UEAwwgWXViaWNvIFUyRiBFRSBTZXJpYWwgMTQ4MDMzMjE1NzgwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASisDmTIlQxnUH6SFTVfKGN62nMmz5Nga45nzI-gRZDme8qlRRnPRV87L-18LzHiQhT7lXPPxogZvTVE5uTizELoxIwEDAOBgorBgEEAYLECgECBAAwCwYJKoZIhvcNAQELA4IBAQG8zBr5C3uVeBjVVaQzcWpgFqztyzEyw0EPNmFkEGwj2SqwbF0cLLaSmtQhSKoqOvOuU4k6aqFAyukyZZMVPZKqAP0Vh0sCMpRMzpDvEZjO3v6gh5Z8bIDmtQAJ5B2nnILyVpc7DA7taj3dUrZzNMD8v-bYjKdTsZJ_QzQstsewIPkoFOIRRtqta0iwkEFiX_cwR11IF-USGcQHKUBoMX65JP9nY6DzQ3XHplOD3bHUOHsCi2MqBZU-1fKOrQJpNP0w8cBQpSk_hsVTm7UiGW_FGrxrIKXfpGfCGICKDxCMfuWKIshu0HjP0pEhowAX1Ls1pie2SoK3-VEhYtkOFRLqMEUCIFnX5ZcO8ZWOKyF6R-tAse3rYdzwFBq4LZzEeXUwn6oMAiEAwNuC4mkjobmeyilaLM4twOAicm-R_x_YKzcQcXIx5cU'}} } Return: {'method_id': 'U2F:1', 'msg': 'Enroll complete', 'status': 'OK'}Assign enrolled data to user, create authenticator:
POST /api/v1/users/e7c62c0c055011e5810a000c294fde0e/templates { 'enroll_process_id': 'hn0k1pTx1T6MQwOIbhBPUlLIopROig4Q', 'login_session_id': 'WXogCpZcHlsGsmmYiXkcxbg1qJMHJ4eD' } Return: {'auth_t_id': 'e7f7edc8055011e5810a000c294fde0e'}
How to build APPID from inside browser
function getOriginFromUrl(url) { var re = new RegExp('^(https?://)[^/]*/?'); var originarray = re.exec(url); if (originarray == null) return originarray; var origin = originarray[0]; while (origin.charAt(origin.length - 1) == '/') { origin = origin.substring(0, origin.length - 1); } if (origin == 'http:' || origin == 'https:') return null; return origin; } var appId = getOriginFromUrl(window.location);
-
class
aucore.au.ap.smartphone_ap.SmartphoneEnrollProcess(policy)¶ Error reasons:
- SMARTPHONE_ENROLL_TIMEOUT
- SMARTPHONE_WAITING_DATA
- SMARTPHONE_SCAN_QR
-
class
aucore.au.ap.voice.VoiceEnrollProcess(policy)¶
-
class
aucore.au.ap.smartcard.SmartcardEnrollProcess¶ Now only support contactless cards (UID).
Example of enrollment
Create enroll process (login before that and use login_session_id):
POST /api/v1/enroll { "login_session_id": "mDclxFuBrCNAHddXazdAeu06bsxlyfqY", "method_id": "CARD:1" } Return: { "enroll_process_id": "23AEHu4uoISJBZ3KEjUo3Y7s2MN7MQe2" }Store card UID and validate card certificate(for PKI-cards):
POST /api/v1/enroll/23AEHu4uoISJBZ3KEjUo3Y7s2MN7MQe2/do_enroll { "login_session_id": "mDclxFuBrCNAHddXazdAeu06bsxlyfqY", "response": {"card_uid": "11223344", "card_cert": "<hex cert in DER format>"} } Return: { "status": "OK", "msg": "Enroll complete", "method_id": "CARD:1" }Assign enrolled data to user, create authenticator:
POST /api/v1/users/6104a6cf424b11e5b7ebdc85de0b0889/templates { "enroll_process_id": "23AEHu4uoISJBZ3KEjUo3Y7s2MN7MQe2", "login_session_id": "mDclxFuBrCNAHddXazdAeu06bsxlyfqY" } Return: { "auth_t_id": "92a19590425911e5b7ebdc85de0b0889" }