Есть ли способ войти на веб-страницу, используя имя пользователя, пароль и специальный автоматически сгенерированный токен? - PullRequest
0 голосов
/ 21 октября 2019

У меня есть простое программное обеспечение, написанное на C #, которое генерирует значение токена с помощью закрытого ключа RSA, хранящегося на одном перьевом диске, с аутентификацией по отпечатку пальца. Мне нужен способ входа в мое приложение, используя имя пользователя, пароль и сгенерированный токен автоматически. Мое приложение использует AspNetCore.Identity, как указано в заголовке.

Я попытался сгенерировать и запустить простую веб-форму из приложения, например:

<HEAD>
 <script>
   function loginForm() {
   document.myform.action = "http://localhost:5000";
   document.myform.submit();
 }
</script>
</HEAD>
<BODY onLoad="loginForm()">
    <FORM   id="myform" METHOD="POST">
    <INPUT  id="UserName" VALUE="uservalue">
    <INPUT  id="Password" VALUE="passwd">
    <INPUT  id="SecretToken" VALUE="tokenval">
</FORM>
</BODY>
</HTML>

Перенаправление входа в формудействие здесь. Нужно ли wau автоматически предоставлять учетные данные для метода ExternaLoginSing, минуя форму входа?

[HttpGet]
        [AllowAnonymous]
        public async Task<IActionResult> Login(string returnUrl = null)
        {
            ClearSession();

            // Clear the existing external cookie to ensure a clean login process
            await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme);

            ViewData["ReturnUrl"] = returnUrl;
            return View();
        }

        private async Task<Microsoft.AspNetCore.Identity.SignInResult> ExternalLoginSign(UserAuthenticationType uat, String username, int? val, string token)
        {
            String providerName = String.Empty;
            switch (uat)
            {
                case UserAuthenticationType.USERAUTH_REMOTE:
                    providerName = ...;
                    ...
                    break;
                case UserAuthenticationType.USERAUTH_LDAP:
                    providerName = ...;
                    ...
                    break;
            }
            return await _signInManager.ExternalLoginSignInAsync(providerName, username, token, true);
        }
...