{"id":1039,"date":"2023-03-14T13:09:01","date_gmt":"2023-03-14T05:09:01","guid":{"rendered":"http:\/\/idaas-doc.cloudentify.com\/docs\/?p=1039"},"modified":"2023-05-10T13:11:26","modified_gmt":"2023-05-10T05:11:26","slug":"fontfidou2f","status":"publish","type":"post","link":"https:\/\/idaas-doc.cloudentify.com\/docs\/fontfidou2f\/","title":{"rendered":"\u524d\u7aefFIDO U2F\u96c6\u6210"},"content":{"rendered":"\n<h3><span id=\"i\">\u7ed1\u5b9a\u786c\u4ef6\u4ee4\u724c<\/span><\/h3>\n\n\n\n<p>1.1  \u83b7\u53d6\u4ee4\u724c\u4fe1\u606f<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>HTTP Method\uff1aPOST\n\u8bf7\u6c42\u5730\u5740\uff1ahttps:\/\/serverurl\/api\/v1\/safe\/u2fRegisterStart\nHeader Content-Type\uff1aapplication\/json<\/code>             <\/pre>\n\n\n\n<p>\u63a5\u53e3\u529f\u80fd\uff1a&nbsp;\u83b7\u53d6\u7528\u6237\u548c\u786c\u4ef6\u4ee4\u724c\u76f8\u5173\u6570\u636e\u3002<\/p>\n\n\n\n<p>\u8bf7\u6c42\u53c2\u6570\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table td-self-adaption\"><table><thead><tr><th>\u53c2\u6570\u540d<\/th><th>\u5fc5\u9009<\/th><th>\u7c7b\u578b<\/th><th>\u53c2\u6570\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td>tokenName<\/td><td>\u662f<\/td><td>String<\/td><td>\u81ea\u5b9a\u4e49\u7684\u4ee4\u724c\u540d\u79f0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u54cd\u5e94\u7ed3\u679c\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table td-self-adaption\"><table><thead><tr><th>\u53c2\u6570\u540d<\/th><th>\u53c2\u6570\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td>code<\/td><td>\u54cd\u5e94\u7801\uff0c\u5177\u4f53\u53c2\u89c1\u9644\u5f55\uff1a\u54cd\u5e94\u7801<\/td><\/tr><tr><td>message<\/td><td>\u7ed3\u679c\u63cf\u8ff0<\/td><\/tr><tr><td>data<\/td><td>\u4e1a\u52a1\u6570\u636e\uff0c\u6b64\u6570\u636e\u4e3ajson\u683c\u5f0f\u6570\u636e\uff0c\u4ee5\u4e0b\u4e3a\u6b64\u63a5\u53e3\u8fd4\u56de\u6570\u636e\u8bf4\u660e\u5c5e\u6027\u540d\u79f0\u8bf4\u660ecode\u8fd4\u56de\u7801\uff0c0\u8868\u793a\u6210\u529f\uff0c\u5176\u5b83\u8fd4\u56de\u7801\u53c2\u89c1\u8fd4\u56de\u7801\u5217\u8868\u3002msg\u8fd4\u56de\u63cf\u8ff0\u4fe1\u606freqid\u662f\u65b0\u521b\u5efa\u7684\u51ed\u636e\u7684ID\uff0c\u5728\u7528\u6237\u5c1d\u8bd5\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u65f6\u7528\u4e8e\u6807\u8bc6\u5b83\u3002fido2_data\u4e1a\u52a1\u6570\u636e\uff0c\u6b64\u6570\u636e\u4e3ajson\u683c\u5f0f\u6570\u636e\uff0c\u4ee5\u4e0b\u4e3a\u6b64\u63a5\u53e3\u8fd4\u56de\u6570\u636e\u8bf4\u660e\u5c5e\u6027\u540d\u79f0\u8bf4\u660erp\u4ee3\u8868\u4f9d\u8d56\u65b9\uff0c\u8fd9\u662f\u8d1f\u8d23\u6ce8\u518c\u548c\u9a8c\u8bc1\u7528\u6237\u7684\u5b9e\u4f53\uff0c\u5373\u6211\u4eec\u8981\u5411\u5176\u6ce8\u518c\u7684\u7f51\u7ad9\u3002 id\u5fc5\u987b\u662f\u7f51\u7ad9\u57df\u7684\u5b50\u96c6\u3002challenge\u670d\u52a1\u5668\u6536\u5230\u7684\u968f\u673a\u5b57\u7b26\u4e32\uff0c\u5fc5\u987b\u7528\u516c\u5171\u5bc6\u94a5\u7b7e\u540d\u4ee5\u8bc1\u660e\u7528\u6237\u62e5\u6709\u76f8\u5e94\u7684\u79c1\u6709\u5bc6\u94a5\u3002user\u5305\u542b\u6709\u5173\u5f53\u524d\u6ce8\u518c\u7528\u6237\u7684\u4fe1\u606f\u3002 \u5b83\u5fc5\u987b\u81f3\u5c11\u5305\u542b\u7528\u4e8e\u5c06\u7528\u6237\u4e0e\u51ed\u8bc1\u5173\u8054\u7684\u5c5e\u6027id \u3002 \u5b83\u5728\u670d\u52a1\u5668\u4e0a\u751f\u6210\u3002pubKeyCredParams\u662f\u4e00\u4e2a\u5bf9\u8c61\u6570\u7ec4\uff0c\u63cf\u8ff0\u4e86\u5c06\u8981\u521b\u5efa\u7684\u51ed\u8bc1\u7684\u529f\u80fd\u3002 \u5f53\u524d\uff0c type\u7684\u552f\u4e00\u53ef\u80fd\u503c\u4e3a\u201c\u516c\u94a5\u201d\uff0c\u800calg\u7684\u503c-7\u8868\u793a\u4f7f\u7528SHA-256\u7684\u692d\u5706\u66f2\u7ebf\u7b97\u6cd5ECDSA\u3002timeout\u5305\u542b\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d\u7684\u65f6\u95f4\uff0c\u811a\u672c\u5c06\u7b49\u5f85\u6ce8\u518c\u8fc7\u7a0b\u5b8c\u6210authenticatorSelection\u8bbe\u7f6e\u7528\u4e8e\u521b\u5efa\u51ed\u636e\u7684authenticatorSelectionCriteria\u5668\u7684\u6761\u4ef6attestation\u5305\u542b\u65b0\u751f\u6210\u7684\u516c\u94a5\uff0c\u53ef\u9009\u7684\u8bc1\u660e\u8bc1\u4e66\u4ee5\u53ca\u7528\u4e8e\u670d\u52a1\u5668\u4e0a\u9a8c\u8bc1\u7684\u5176\u4ed6\u5143\u6570\u636e\u3002<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u6210\u529f\u793a\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>{\n    \"code\":200,\n    \"message\":\"ok\",\n    \"data\":{\n        \"msg\":\"\u6210\u529f\",\n        \"code\":0,\n        \"fido2_data\":{\n            \"attestation\":\"direct\",\n            \"challenge\":\"gi-7_E_hAR6I8P58x0O9NYQcrUcm7kSuF54wlaNLiIY\",\n            \"authenticatorSelection\":{\n                \"authenticatorAttachment\":\"cross-platform\",\n                \"userVerification\":\"preferred\",\n                \"requireResidentKey\":false\n            },\n            \"user\":{\n                \"displayName\":\"zyq\",\n                \"id\":\"enlx\"\n            },\n            \"rp\":{\n                \"name\":\"company_default_api\",\n                \"id\":\"cloudentify.com\"\n            },\n            \"pubKeyCredParams\":[\n                {\n                    \"type\":\"public-key\",\n                    \"alg\":-7\n                }\n                ]\n        },\n        \"reqid\":\"fido20d040o0c0\",\n        \"username\":\"zyq\"\n    }\n}<\/code>             <\/pre>\n\n\n\n<p>1.2  \u8c03\u53d6\u7ed1\u5b9a\u4ee4\u724c<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\u8bf7\u6c42\u65b9\u6cd5\uff1anavigator.credentials.create()<\/code>          <\/pre>\n\n\n\n<p>\u63a5\u53e3\u529f\u80fd\uff1a&nbsp;\u5c06\u7528\u6237\u548c\u786c\u4ef6\u4ee4\u724c\u8fdb\u884c\u7ed1\u5b9a\u3002<\/p>\n\n\n\n<p>\u8bf7\u6c42\u53c2\u6570\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table td-self-adaption\"><table><thead><tr><th>\u53c2\u6570\u540d<\/th><th>\u5fc5\u9009<\/th><th>\u7c7b\u578b<\/th><th>\u53c2\u6570\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td>publicKey<\/td><td>\u662f<\/td><td>\u5b57\u7b26\u4e32\u5bf9\u8c61<\/td><td>\u9700\u8981JSON\u5e8f\u5217\u5316\uff0c\u7528\u6237\u548c\u786c\u4ef6\u4ee4\u724c\u7684\u6570\u636e\uff0c\u4ee5\u4e0b\u4e3a\u53c2\u6570\u8bf4\u660e\u5c5e\u6027\u540d\u79f0\u8bf4\u660erp\u4ee3\u8868\u4f9d\u8d56\u65b9\uff0c\u8fd9\u662f\u8d1f\u8d23\u6ce8\u518c\u548c\u9a8c\u8bc1\u7528\u6237\u7684\u5b9e\u4f53\uff0c\u5373\u6211\u4eec\u8981\u5411\u5176\u6ce8\u518c\u7684\u7f51\u7ad9\u3002 id\u5fc5\u987b\u662f\u7f51\u7ad9\u57df\u7684\u5b50\u96c6\u3002challenge\u670d\u52a1\u5668\u6536\u5230\u7684\u968f\u673a\u5b57\u7b26\u4e32\uff0c\u5fc5\u987b\u7528\u516c\u5171\u5bc6\u94a5\u7b7e\u540d\u4ee5\u8bc1\u660e\u7528\u6237\u62e5\u6709\u76f8\u5e94\u7684\u79c1\u6709\u5bc6\u94a5\uff0c\u9700\u8981base64\u89e3\u7801\u5904\u7406\u3002user\u5305\u542b\u6709\u5173\u5f53\u524d\u6ce8\u518c\u7528\u6237\u7684\u4fe1\u606f\u3002 \u5b83\u5fc5\u987b\u81f3\u5c11\u5305\u542b\u7528\u4e8e\u5c06\u7528\u6237\u4e0e\u51ed\u8bc1\u5173\u8054\u7684\u5c5e\u6027id \u3002 \u5b83\u5728\u670d\u52a1\u5668\u4e0a\u751f\u6210\u3002id\u9700\u8981base64\u89e3\u7801\u5904\u7406pubKeyCredParams\u662f\u4e00\u4e2a\u5bf9\u8c61\u6570\u7ec4\uff0c\u63cf\u8ff0\u4e86\u5c06\u8981\u521b\u5efa\u7684\u51ed\u8bc1\u7684\u529f\u80fd\u3002 \u5f53\u524d\uff0c type\u7684\u552f\u4e00\u53ef\u80fd\u503c\u4e3a\u201c\u516c\u94a5\u201d\uff0c\u800calg\u7684\u503c-7\u8868\u793a\u4f7f\u7528SHA-256\u7684\u692d\u5706\u66f2\u7ebf\u7b97\u6cd5ECDSA\u3002timeout\u5305\u542b\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d\u7684\u65f6\u95f4\uff0c\u811a\u672c\u5c06\u7b49\u5f85\u6ce8\u518c\u8fc7\u7a0b\u5b8c\u6210authenticatorSelection\u8bbe\u7f6e\u7528\u4e8e\u521b\u5efa\u51ed\u636e\u7684authenticatorSelectionCriteria\u5668\u7684\u6761\u4ef6attestation\u5305\u542b\u65b0\u751f\u6210\u7684\u516c\u94a5\uff0c\u53ef\u9009\u7684\u8bc1\u660e\u8bc1\u4e66\u4ee5\u53ca\u7528\u4e8e\u670d\u52a1\u5668\u4e0a\u9a8c\u8bc1\u7684\u5176\u4ed6\u5143\u6570\u636e\u3002<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u53c2\u6570\u793a\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>{\n    \"publicKey\": {\n        \"reqid\": \"fido20d040o0c0\",\n        \"rp\": {\n            \"id\": \"cloudentify.com\",\n            \"name\": \"company_default_api\"\n        },\n        \"challenge\": \"Z2ktN19FX2hBUjZJOFA1OVjbTdrU3VGNTR3bGFOTGlJWQ==\",\n        \"user\": {\n            \"displayName\": \"zyq\",\n            \"id\": \"ZW5seA==\"\n        },\n        \"pubKeyCredParams\": [\n            {\n                \"type\":\"public-key\",\n               \"alg\":-7\n            }\n        ],\n        \"authenticatorSelection\": {\n            \"authenticatorAttachment\":\"cross-platform\",\n            \"userVerification\":\"preferred\",\n            \"requireResidentKey\":false\n        },\n        \"attestation\":\"direct\",\n    }\n}<\/code>            <\/pre>\n\n\n\n<p>1.3  \u6821\u9a8c\u786c\u4ef6\u4ee4\u724c<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>HTTP Method\uff1aPOST\n\u8bf7\u6c42\u5730\u5740\uff1ahttps:\/\/serverurl\/api\/v1\/safe\/u2fRegisterConfirm\nHeader Content-Type\uff1aapplication\/json<\/code>            <\/pre>\n\n\n\n<p>\u63a5\u53e3\u529f\u80fd\uff1a&nbsp;\u6821\u9a8c\u786c\u4ef6\u4ee4\u724c<\/p>\n\n\n\n<p>\u8bf7\u6c42\u53c2\u6570\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table td-self-adaption\"><table><thead><tr><th>\u53c2\u6570\u540d<\/th><th>\u5fc5\u9009<\/th><th>\u7c7b\u578b<\/th><th>\u53c2\u6570\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td>reqId<\/td><td>\u662f<\/td><td>String<\/td><td>\u662f\u65b0\u521b\u5efa\u7684\u51ed\u636e\u7684ID\uff0c\u5728\u7528\u6237\u5c1d\u8bd5\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u65f6\u7528\u4e8e\u6807\u8bc6\u5b83\u3002\u83b7\u53d6\u4ee4\u724c\u65f6\u8fd4\u56de\u7684\u6570\u636e<\/td><\/tr><tr><td>u2fData<\/td><td>\u662f<\/td><td>\u5b57\u7b26\u4e32\u5bf9\u8c61<\/td><td>\u9700\u8981JSON\u5e8f\u5217\u5316\uff0c\u7ed1\u5b9a\u4ee4\u724c\u8fd4\u56de\u7684\u6570\u636e\u96c6\u5408\uff0c\u4ee4\u724c\u6821\u9a8c\u6210\u529f\u540e\u7684\u6570\u636e\u53c2\u6570\u4e1a\u52a1\u6570\u636e\uff0c\u4ee5\u4e0b\u4e3a\u53c2\u6570\u6570\u636e\u8bf4\u660e\u5c5e\u6027\u540d\u79f0\u8bf4\u660eid\u662f\u65b0\u521b\u5efa\u7684\u51ed\u636e\u7684ID\uff0c\u5728\u7528\u6237\u5c1d\u8bd5\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u65f6\u7528\u4e8e\u6807\u8bc6\u5b83\u3002type\u786c\u4ef6\u8ba4\u8bc1\u8fd4\u56de\u7684\u786c\u4ef6\u7c7b\u578b\uff0c\u5f53\u524d\u53ef\u80fd\u4ec5\u4fdd\u7559\u503c\u201c public-key\u201d\u3002rawId\u662f\u4e8c\u8fdb\u5236\u683c\u5f0f\u7684idresponse\u6b64\u6570\u636e\u5168\u90e8\u9700\u8981base64\u7f16\u7801\u5904\u7406\uff0c\u4e3ajson\u683c\u5f0f\u6570\u636e\uff0c\u4ee5\u4e0b\u4e3a\u53c2\u6570\u6570\u636e\u8bf4\u660e\u5c5e\u6027\u540d\u79f0\u8bf4\u660eclientDataJSON\u4f5c\u4e3aresponse\u662f\u4ece\u6d4f\u89c8\u5668\u4f20\u9012\u5230\u8eab\u4efd\u9a8c\u8bc1\u5668\u7684\u6570\u636e\uff0c\u7528\u4e8e\u5c06\u51ed\u636e\u4e0e\u670d\u52a1\u5668\u548c\u6d4f\u89c8\u5668\u5173\u8054\u3002attestationObject\u5305\u542b\u65b0\u751f\u6210\u7684\u516c\u94a5\uff0c\u53ef\u9009\u7684\u8bc1\u660e\u8bc1\u4e66\u4ee5\u53ca\u7528\u4e8e\u670d\u52a1\u5668\u4e0a\u9a8c\u8bc1\u7684\u5176\u4ed6\u5143\u6570\u636e\u3002username\u7528\u6237\u540d<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u53c2\u6570\u793a\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>{\n        \"reqId\":\"fido20d040o0c0\",\n        \"u2fData\":\"{\\\"id\\\":\\\"8hV8x0dZFKEhmxx3d4szCLYDGORoJcERuHx4vGDbpaedc1B_Vos4BblGCA6CybIlURGxIgCvteR3\n        -g4Ssmgh8l74HxsdX-sjzb5PHSSLMiFtokMtGudw6drlUjNB2BIh\\\",\\\"type\\\":\\\"public-key\\\",\\\"rawId\\\":{},\\\"res\n        ponse\\\":{\\\"clientDataJSON\\\":\\\"eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiZ2ktN19FX2hBUjZ\n        JOFA1OHgwTzlOWVFjclVjbTdrU3VGNTR3bGFOTGlJWSIsIm9yaWdpbiI6Imh0dHBzOi8vd2FuZ3poZS5jbG91ZGVudGlmeS5j\n        b20iLCJjcm9zc09yaWdpbiI6ZmFsc2V9\\\",\\\"attestationObject\\\":\\\"o2NmbXRmcGFja2VkZ2F0dFN0bXSjY2FsZyZjc2\n        lnWEcwRQIhAKBT5-lp1F6Ql1GcRaPR1OzfTyM3PsMWUhob1JAkxXcLAiAwZJ45jXkol56WBSYVRrKYoy3seKNpK21E0NmIEOJ\n        l9mN4NWOCWQI_MIICOzCCAeGgAwIBAgIQHfK1WlHcS2iFo9meaX_tEjAKBggqhkjOPQQDAjBJMQswCQYDVQQGEwJVUzEdMBsG\n        A1UECgwURmVpdGlhbiBUZWNobm9sb2dpZXMxGzAZBgNVBAMMEkZlaXRpYW4gRklETyBDQSAwNDAgFw0xODA1MjEwMDAwMDBaG\n        A8yMDMzMDUyMDIzNTk1OVowaDELMAkGA1UEBhMCVVMxHTAbBgNVBAoMFEZlaXRpYW4gVGVjaG5vbG9naWVzMSIwIAYDVQQLDB\n        lBdXRoZW50aWNhdG9yIEF0dGVzdGF0aW9uMRYwFAYDVQQDDA1GVCBGSURPMiAwNDMwMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQc\n        DQgAEsn4OjjkAH1Tsm29P6IQZA3ZFIKh262mNPMANfVtNw8zZVjKjGhOsvWfzjz1isqWg3AylKJZADcmtOXiL6iiARaOBiTCB\n        hjAdBgNVHQ4EFgQU3TJEFxpnq79SIAdz0TzPN5aud7EwHwYDVR0jBBgwFoAUkyNwZsUdzsSrHCuthMHz5x3OYGcwDAYDVR0TA\n        QH_BAIwADATBgsrBgEEAYLlHAIBAQQEAwIEMDAhBgsrBgEEAYLlHAEBBAQSBBDuBBvOJeVM24-GiX_WQYRkMAoGCCqGSM49BA\n        MCA0gAMEUCID8W6RCyob1_rDPUPaaBuWY4Z91votfLnSdHB_f88bGxAiEAozu4gVI5H8ZSu5t94xgy5QJrmtPjeslPJab0Tqv\n        zRNZZAf4wggH6MIIBoKADAgECAhAYFStBt0OubbQVmcOxfYIJMAoGCCqGSM49BAMCMEsxCzAJBgNVBAYTAlVTMR0wGwYDVQQK\n        DBRGZWl0aWFuIFRlY2hub2xvZ2llczEdMBsGA1UEAwwURmVpdGlhbiBGSURPIFJvb3QgQ0EwIBcNMTgwNTIwMDAwMDAwWhgPM\n        jAzODA1MTkyMzU5NTlaMEkxCzAJBgNVBAYTAlVTMR0wGwYDVQQKDBRGZWl0aWFuIFRlY2hub2xvZ2llczEbMBkGA1UEAwwSRm\n        VpdGlhbiBGSURPIENBIDA0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExaEWVjmKkhb8crsoukpphTm_j0crBmzIQCqdpJ_\n        QJDPrtUdnRw9dh3qcTi6bcEfSWvhbziA9xkVR6tnbceu4M6NmMGQwHQYDVR0OBBYEFJMjcGbFHc7EqxwrrYTB8-cdzmBnMB8G\n        A1UdIwQYMBaAFEu9hyYRrRyJzwRYvnDSCIxrFiO3MBIGA1UdEwEB_wQIMAYBAf8CAQAwDgYDVR0PAQH_BAQDAgEGMAoGCCqGS\n        M49BAMCA0gAMEUCIH-1QMQ_RpYWJL0TJUi0St8EtmFxj-QsMrpfmtQMcGq1AiEA-sWmfdzVx_eRWKQZBWiZW67HU-J6lUpOMi\n        H3nkpgwvFoYXV0aERhdGFY5JUOnH781oolR6eNlLBhcfd9QVU5psnVCXC5Kul-WF96RQAAHMPuBBvOJeVM24-GiX_WQYRkAGD\n        yFXzHR1kUoSGbHHd3izMItgMY5GglwRG4fHi8YNulp51zUH9WizgFuUYIDoLJsiVREbEiAK-15Hf6DhKyaCHyXvgfGx1f6yPN\n        vk8dJIsyIW2iQy0a53Dp2uVSM0HYEiGlAQIDJiABIVggITIsh6qbrpQvMAZGtooofBjEGlluUothDPpBgJCU9NkiWCCjoOBq6\n        fhot865lFLRFW0x2fsH1T3sebtfsYb0fnBqug\\\"},\\\"username\\\":\\\"zyq\\\"}\"\n}<\/code>            <\/pre>\n\n\n\n<p>\u54cd\u5e94\u7ed3\u679c\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table td-self-adaption\"><table><thead><tr><th>\u53c2\u6570\u540d<\/th><th>\u53c2\u6570\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td>code<\/td><td>\u54cd\u5e94\u7801\uff0c\u5177\u4f53\u53c2\u89c1\u9644\u5f55\uff1a\u54cd\u5e94\u7801<\/td><\/tr><tr><td>message<\/td><td>\u7ed3\u679c\u63cf\u8ff0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3><span id=\"i-2\">\u89e3\u7ed1\u786c\u4ef6\u4ee4\u724c<\/span><\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>HTTP Method\uff1aPOST\n\u8bf7\u6c42\u5730\u5740\uff1ahttps:\/\/serverurl\/api\/v1\/safe\/u2fUnbind\nHeader Content-Type\uff1aapplication\/json<\/code>             <\/pre>\n\n\n\n<p>\u63a5\u53e3\u529f\u80fd\uff1a&nbsp;\u6821\u9a8c\u786c\u4ef6\u4ee4\u724c<\/p>\n\n\n\n<p>\u8bf7\u6c42\u53c2\u6570\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table td-self-adaption\"><table><thead><tr><th>\u53c2\u6570\u540d<\/th><th>\u5fc5\u9009<\/th><th>\u7c7b\u578b<\/th><th>\u53c2\u6570\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td>code<\/td><td>\u662f<\/td><td>String<\/td><td>\u624b\u673a\u53f7\u9a8c\u8bc1\u7801<\/td><\/tr><tr><td>tokenName<\/td><td>\u662f<\/td><td>String<\/td><td>\u4ee4\u724c\u540d\u79f0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u54cd\u5e94\u7ed3\u679c\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table td-self-adaption\"><table><thead><tr><th>\u53c2\u6570\u540d<\/th><th>\u53c2\u6570\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td>code<\/td><td>\u54cd\u5e94\u7801\uff0c\u5177\u4f53\u53c2\u89c1\u9644\u5f55\uff1a\u54cd\u5e94\u7801<\/td><\/tr><tr><td>message<\/td><td>\u7ed3\u679c\u63cf\u8ff0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3><span id=\"i-3\">\u786c\u4ef6\u4ee4\u724c\u767b\u5f55<\/span><\/h3>\n\n\n\n<p>1.1  \u83b7\u53d6\u7528\u6237\u5339\u914d\u7684\u786c\u4ef6\u4ee4\u724c\u53c2\u6570<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>HTTP Method\uff1aPOST\n\u8bf7\u6c42\u5730\u5740\uff1ahttps:\/\/serverurl\/api\/v1\/login\/fido2AuthStart\nHeader Content-Type\uff1aapplication\/json<\/code>             <\/pre>\n\n\n\n<p>\u63a5\u53e3\u529f\u80fd\uff1a&nbsp;\u83b7\u53d6\u7528\u6237\u548c\u786c\u4ef6\u4ee4\u724c\u76f8\u5173\u6570\u636e\u3002<\/p>\n\n\n\n<p>\u8bf7\u6c42\u53c2\u6570\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table td-self-adaption\"><table><thead><tr><th>\u53c2\u6570\u540d<\/th><th>\u5fc5\u9009<\/th><th>\u7c7b\u578b<\/th><th>\u53c2\u6570\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td>username<\/td><td>\u662f<\/td><td>String<\/td><td>\u5f53\u524d\u767b\u5f55\u8d26\u53f7\u540d<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u54cd\u5e94\u7ed3\u679c\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table td-self-adaption\"><table><thead><tr><th>\u53c2\u6570\u540d<\/th><th>\u53c2\u6570\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td>code<\/td><td>\u54cd\u5e94\u7801\uff0c\u5177\u4f53\u53c2\u89c1\u9644\u5f55\uff1a\u54cd\u5e94\u7801<\/td><\/tr><tr><td>message<\/td><td>\u7ed3\u679c\u63cf\u8ff0<\/td><\/tr><tr><td>data<\/td><td>\u4e1a\u52a1\u6570\u636e\uff0c\u6b64\u6570\u636e\u4e3ajson\u683c\u5f0f\u6570\u636e\uff0c\u4ee5\u4e0b\u4e3a\u6b64\u63a5\u53e3\u8fd4\u56de\u6570\u636e\u8bf4\u660e\u5c5e\u6027\u540d\u79f0\u8bf4\u660ereqid\u662f\u65b0\u521b\u5efa\u7684\u51ed\u636e\u7684ID\uff0c\u5728\u7528\u6237\u5c1d\u8bd5\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u65f6\u7528\u4e8e\u6807\u8bc6\u5b83\u3002fido2_data\u4e1a\u52a1\u6570\u636e\uff0c\u6b64\u6570\u636e\u4e3ajson\u683c\u5f0f\u6570\u636e\uff0c\u4ee5\u4e0b\u4e3a\u6b64\u63a5\u53e3\u8fd4\u56de\u6570\u636e\u8bf4\u660e\u5c5e\u6027\u540d\u79f0\u8bf4\u660erpId\u4ee3\u8868\u4f9d\u8d56\u65b9\uff0c\u8fd9\u662f\u8d1f\u8d23\u6ce8\u518c\u548c\u9a8c\u8bc1\u7528\u6237\u7684\u5b9e\u4f53\uff0c\u5373\u6211\u4eec\u8981\u5411\u5176\u6ce8\u518c\u7684\u7f51\u7ad9\u3002 id\u5fc5\u987b\u662f\u7f51\u7ad9\u57df\u7684\u5b50\u96c6\u3002challenge\u670d\u52a1\u5668\u6536\u5230\u7684\u968f\u673a\u5b57\u7b26\u4e32\uff0c\u5fc5\u987b\u7528\u516c\u5171\u5bc6\u94a5\u7b7e\u540d\u4ee5\u8bc1\u660e\u7528\u6237\u62e5\u6709\u76f8\u5e94\u7684\u79c1\u6709\u5bc6\u94a5\u3002timeout\u5305\u542b\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d\u7684\u65f6\u95f4\uff0c\u811a\u672c\u5c06\u7b49\u5f85\u6ce8\u518c\u8fc7\u7a0b\u5b8c\u6210allowCredentials\u662f\u4e00\u4e2a\u5305\u542b\u51ed\u8bc1\u63cf\u8ff0\u7b26\u7684\u6570\u7ec4\uff0c\u8be5\u51ed\u8bc1\u63cf\u8ff0\u7b26\u9650\u5236\u4e86\u5141\u8bb8\u7684\u8eab\u4efd\u9a8c\u8bc1\u51ed\u8bc1<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>1.2  \u786c\u4ef6\u4ee4\u724c\u8ba4\u8bc1<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\u8bf7\u6c42\u65b9\u6cd5\uff1anavigator.credentials.get()<\/code>  <\/pre>\n\n\n\n<p>\u63a5\u53e3\u529f\u80fd\uff1a&nbsp;\u5f39\u8d77\u786c\u4ef6\u4ee4\u724c\u8fdb\u884c\u8ba4\u8bc1\u3002<\/p>\n\n\n\n<p>\u8bf7\u6c42\u53c2\u6570\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table td-self-adaption\"><table><thead><tr><th>\u53c2\u6570\u540d<\/th><th>\u5fc5\u9009<\/th><th>\u7c7b\u578b<\/th><th>\u53c2\u6570\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td>publicKey<\/td><td>\u662f<\/td><td>\u5b57\u7b26\u4e32\u5bf9\u8c61<\/td><td>\u786c\u4ef6\u4ee4\u724c\u7684\u6570\u636e\u4e1a\u52a1\u6570\u636e\uff0c\u6b64\u6570\u636e\u4e3ajson\u683c\u5f0f\u6570\u636e\uff0c\u4ee5\u4e0b\u4e3a\u6b64\u63a5\u53e3\u8fd4\u56de\u6570\u636e\u8bf4\u660e\u5c5e\u6027\u540d\u79f0\u8bf4\u660erpId\u4ee3\u8868\u4f9d\u8d56\u65b9\uff0c\u8fd9\u662f\u8d1f\u8d23\u6ce8\u518c\u548c\u9a8c\u8bc1\u7528\u6237\u7684\u5b9e\u4f53\uff0c\u5373\u6211\u4eec\u8981\u5411\u5176\u6ce8\u518c\u7684\u7f51\u7ad9\u3002 id\u5fc5\u987b\u662f\u7f51\u7ad9\u57df\u7684\u5b50\u96c6\u3002challenge\u670d\u52a1\u5668\u6536\u5230\u7684\u968f\u673a\u5b57\u7b26\u4e32\uff0c\u5fc5\u987b\u7528\u516c\u5171\u5bc6\u94a5\u7b7e\u540d\u4ee5\u8bc1\u660e\u7528\u6237\u62e5\u6709\u76f8\u5e94\u7684\u79c1\u6709\u5bc6\u94a5\uff0c\u9700\u8981base64\u89e3\u7801\u5904\u7406\u3002timeout\u5305\u542b\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d\u7684\u65f6\u95f4\uff0c\u811a\u672c\u5c06\u7b49\u5f85\u6ce8\u518c\u8fc7\u7a0b\u5b8c\u6210allowCredentials\u662f\u4e00\u4e2a\u5305\u542b\u51ed\u8bc1\u63cf\u8ff0\u7b26\u7684\u6570\u7ec4\uff0c\u8be5\u51ed\u8bc1\u63cf\u8ff0\u7b26\u9650\u5236\u4e86\u5141\u8bb8\u7684\u8eab\u4efd\u9a8c\u8bc1\u51ed\u8bc1\uff08\u9700\u8981\u628a\u6bcf\u4e2aid\u90fdbase64\u89e3\u7801\u5904\u7406\uff09<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u53c2\u6570\u793a\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>{\n    \"challenge\": \"jRjdvzWSHOnmhEVAGyxiUO_XPS4gQV87ITpodQigNHw\",\n    \"rpId\": \"cloudentify.com\",\n    \"allowCredentials\": [\n        {\n            \"id\": \"8hV8x0dZFKEhmxx3d4szCLYDGOGxIgCMiFtokMtGudw6drlUjNB2BIh\\\",\n            \"type\": \"public-key\"\n        }\n    ]\n}<\/code>             <\/pre>\n\n\n\n<p>1.3  \u786c\u4ef6\u4ee4\u724c\u767b\u5f55<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>HTTP Method\uff1aPOST\n\u8bf7\u6c42\u5730\u5740\uff1ahttps:\/\/serverurl\/api\/v1\/login\/fido2AuthConfirm\nHeader Content-Type\uff1aapplication\/json<\/code>              <\/pre>\n\n\n\n<p>\u63a5\u53e3\u529f\u80fd\uff1a&nbsp;\u4f7f\u7528\u4ee4\u724c\u767b\u5f55\u3002<\/p>\n\n\n\n<p>\u8bf7\u6c42\u53c2\u6570\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table td-self-adaption\"><table><thead><tr><th>\u53c2\u6570\u540d<\/th><th>\u5fc5\u9009<\/th><th>\u7c7b\u578b<\/th><th>\u53c2\u6570\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td>reqId<\/td><td>\u662f<\/td><td>String<\/td><td>\u786c\u4ef6\u4ee4\u724cid\uff0c\u83b7\u53d6\u53c2\u6570\u65f6\u63a5\u53e3\u83b7\u53d6<\/td><\/tr><tr><td>username<\/td><td>\u662f<\/td><td>String<\/td><td>\u767b\u5f55\u7528\u6237\u540d<\/td><\/tr><tr><td>u2fData<\/td><td>\u662f<\/td><td>\u5b57\u7b26\u4e32\u5bf9\u8c61<\/td><td>\u9700\u8981JSON\u5e8f\u5217\u5316\uff0c\u786c\u4ef6\u4ee4\u724c\u6821\u9a8c\u6210\u529f\u540e\u7684\u6570\u636e\u53c2\u6570\u4e1a\u52a1\u6570\u636e\uff0c\u4ee5\u4e0b\u4e3a\u53c2\u6570\u6570\u636e\u8bf4\u660e\u5c5e\u6027\u540d\u79f0\u8bf4\u660eid\u662f\u65b0\u521b\u5efa\u7684\u51ed\u636e\u7684ID\uff0c\u5728\u7528\u6237\u5c1d\u8bd5\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u65f6\u7528\u4e8e\u6807\u8bc6\u5b83\u3002type\u786c\u4ef6\u8ba4\u8bc1\u8fd4\u56de\u7684\u786c\u4ef6\u7c7b\u578b\uff0c\u5f53\u524d\u53ef\u80fd\u4ec5\u4fdd\u7559\u503c\u201c public-key\u201d\u3002rawId\u662f\u4e8c\u8fdb\u5236\u683c\u5f0f\u7684idresponse\u6b64\u6570\u636e\u5168\u90e8\u9700\u8981base64\u7f16\u7801\u5904\u7406\uff0c\u4e3ajson\u683c\u5f0f\u6570\u636e\uff0c\u4ee5\u4e0b\u4e3a\u53c2\u6570\u6570\u636e\u8bf4\u660e\u5c5e\u6027\u540d\u79f0\u8bf4\u660eclientDataJSON\u4f5c\u4e3aresponse\u662f\u4ece\u6d4f\u89c8\u5668\u4f20\u9012\u5230\u8eab\u4efd\u9a8c\u8bc1\u5668\u7684\u6570\u636e\uff0c\u7528\u4e8e\u5c06\u51ed\u636e\u4e0e\u670d\u52a1\u5668\u548c\u6d4f\u89c8\u5668\u5173\u8054\u3002authenticatorData\u5728\u6ce8\u518c\u6b65\u9aa4\u4e2d\u7c7b\u4f3c\u4e8eattestationObject \uff0c\u4f46\u5176\u4e2d\u4e0d\u5305\u542b\u516c\u94a5\u3002 \u7528\u4e8e\u8eab\u4efd\u9a8c\u8bc1\u671f\u95f4\u7684\u9a8c\u8bc1\u3002signature\u662f\u7531\u68c0\u7d22\u5230\u7684\u51ed\u8bc1\u7684\u79c1\u94a5\u751f\u6210\u7684(\u610f\u5916)\u7b7e\u540d\uff0c\u5c06\u4f7f\u7528\u79c1\u94a5\u5bf9\u5176\u8fdb\u884c\u9a8c\u8bc1\u4ee5\u68c0\u67e5\u5176\u662f\u5426\u6709\u6548\u3002userHandle\u662f\u5728\u6ce8\u518c\u6b65\u9aa4\u4e2d\u63d0\u4f9b\u7684user.id\u7684\u503c\uff0c\u5c06\u7528\u4e8e\u5c06\u7528\u6237\u4e0e\u51ed\u8bc1\u5173\u8054\u3002<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u53c2\u6570\u793a\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>{\n    \"reqId\":\"fido20m0p0e0c0\",\n    \"username\":\"zyq\",\n    \"fido2Data\":\"{\n        \"id\":\"tokMtGudw6drlUjNB2BIh\",\n        \"type\":\"public-key\",\n        \"rawId\":{},\n        \"response\":{\n            \"clientDataJSON\":\"eyJ0eXBlIjoid2ViYXV0aG4uZ\",\n            \"authenticatorData\":\"lQ6cfvzWiiVHp42UsGFx931BVTmmydUJcLkq6X5YX3oFAAAeSw\",\n            \"signature\":\"MEUCIQCdgUBc8I3dJbSU2EDQL0QYR2TfO07OCYEGqc3exBAZIe6c1InMlE\",\n            \"userHandle\":\"JbSU2EDQL0QYR2TfO07OCY\"\n        }\n    }\"\n}<\/code>            <\/pre>\n\n\n\n<p>\u54cd\u5e94\u7ed3\u679c\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table td-self-adaption\"><table><thead><tr><th>\u53c2\u6570\u540d<\/th><th>\u53c2\u6570\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td>code<\/td><td>\u54cd\u5e94\u7801\uff0c\u5177\u4f53\u53c2\u89c1\u9644\u5f55\uff1a\u54cd\u5e94\u7801<\/td><\/tr><tr><td>message<\/td><td>\u7ed3\u679c\u63cf\u8ff0<\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u9875\u9762\u4e3b\u8981\u4ecb\u7ecd\u524d\u7aefFIDO U2F\u5982\u4f55\u8fdb\u884c\u96c6\u6210\u96c6\u6210\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-global-header-display":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":""},"categories":[20],"tags":[],"_links":{"self":[{"href":"https:\/\/idaas-doc.cloudentify.com\/docs\/wp-json\/wp\/v2\/posts\/1039"}],"collection":[{"href":"https:\/\/idaas-doc.cloudentify.com\/docs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/idaas-doc.cloudentify.com\/docs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/idaas-doc.cloudentify.com\/docs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/idaas-doc.cloudentify.com\/docs\/wp-json\/wp\/v2\/comments?post=1039"}],"version-history":[{"count":13,"href":"https:\/\/idaas-doc.cloudentify.com\/docs\/wp-json\/wp\/v2\/posts\/1039\/revisions"}],"predecessor-version":[{"id":2101,"href":"https:\/\/idaas-doc.cloudentify.com\/docs\/wp-json\/wp\/v2\/posts\/1039\/revisions\/2101"}],"wp:attachment":[{"href":"https:\/\/idaas-doc.cloudentify.com\/docs\/wp-json\/wp\/v2\/media?parent=1039"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/idaas-doc.cloudentify.com\/docs\/wp-json\/wp\/v2\/categories?post=1039"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/idaas-doc.cloudentify.com\/docs\/wp-json\/wp\/v2\/tags?post=1039"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}