コード例 #1
0
        /// <summary>
        /// 断言:创建断言选项
        /// <para> 当用户想要登录时,我们会根据注册的凭据进行断言。</para>
        /// </summary>
        public async Task <AssertionOptions> AssertionOptionsPost(User user, AssertionClientParams assertionClientParams)
        {
            string error = "";

            // 1. Get user from DB
            if (user == null)
            {
                error = "username was not registered";
                var ass = new AssertionOptions()
                {
                    Status       = "bad",
                    ErrorMessage = error
                };
                return(ass);
            }
            // 2. Get registered credentials from database

            var existingCredentials = GetPublicKeyCredentialDescriptors(user.UserId);

            var options = _fido2.GetAssertionOptions(
                existingCredentials,
                assertionClientParams.UserVerification,
                assertionClientParams.Extensions
                );

            distributedCache.SetString(user.UserId.ToString() + "assertionOptions", options.ToJson(), 120);

            return(options);
        }
コード例 #2
0
ファイル: FIDO2Controller.cs プロジェクト: hyfree/MoreNote
        public async Task <IActionResult> CreateAssertionOptions(string email)
        {
            string error = "";

            try
            {
                var user = userService.GetUserByEmail(email);

                var assertionClientParams = new AssertionClientParams();

                var success = await fido2Service.AssertionOptionsPost(user, assertionClientParams);

                // 4. return "ok" to the client
                return(Json(success));
            }
            catch (Exception e)
            {
                return(Json(new CredentialMakeResult(status: "error", errorMessage: FormatException(e), result: null)));
            }
        }