使用IdentityServer4验证用户而无需登录页面

时间:2017-08-18 07:52:02

标签: authentication xamarin.forms identityserver4

我们使用WebView实现方法构建了一个作为IdentityServer4客户端运行的Xamarin.Forms应用程序,该方法运行良好。但是,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);
    }

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

谢谢你, 安德鲁

0 个答案:

没有答案