在没有登录页面的情况下使用 IdentityServer4 对用户进行身份验证

And*_*eld 6 authentication xamarin.forms identityserver4

我们使用 WebView 实现方法构建了一个 Xamarin.Forms 应用程序,该应用程序作为 IdentityServer4 客户端运行,效果非常好。但是,Apple 不会在商店中接受我们的应用程序,因为他们希望在应用程序内进行身份验证和新帐户创建。因此,我一直在尝试将应用程序登录屏幕中输入的凭据发布到 IdentityServer,希望能够模拟用户输入凭据并提交(发布)登录页面时发生的相同过程:

 public async Task<IActionResult> Authenticate([FromBody] UserLoginViewModel model)
    {
        String result = String.Empty;

        try
        {
            if (!string.IsNullOrWhiteSpace(model.UserName))
            {
                UserKey user = await _userManager.FindByNameAsync(model.UserName.ToLowerInvariant());

                if (String.IsNullOrEmpty(user?.SSID))
                { result = AuthenticateResultEnum.UserDoesNotExist.ToString(); }
                else
                {
                    var signin_result = await _signInManager.PasswordSignInAsync(user, model.Password, model.RememberLogin, false);
                    if (signin_result.Succeeded)
                    {
                        if (_interactionService.IsValidReturnUrl(model.ReturnUrl))
                        {
                            LocalRedirect(model.ReturnUrl);
                        }
                    }
                    else if (signin_result.IsLockedOut)
                    { result = AuthenticateResultEnum.AccountLocked.ToString(); }
                }
            }
        }
        catch (Exception ex)
        {
            result = AuthenticateResultEnum.Error.ToString();
            _logger.ExceptionAsync(ex);
        }

        return new JsonResult(result);
    }
Run Code Online (Sandbox Code Playgroud)

然而,由于涉及所有重定向,我在这个过程中没有运气。是否有一种行之有效的方法可以使用 IdentityServer 对用户进行身份验证,而无需显示登录页面,而是从应用程序登录表单发布凭据和授权请求?其他知名应用程序似乎能够做到这一点,我只是寻求确认它可以通过 IdentityServer4 完成。

谢谢你,安德鲁