我们使用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来完成。
谢谢你, 安德鲁