【发布时间】:2021-05-26 05:06:18
【问题描述】:
我正在使用 Xamarin.Forms 开发跨平台移动应用程序。我有一个 Amazon Cognito 用户池,可以通过第三方(Facebook、Google)以及本机应用程序用户身份验证(用户名/密码)进行身份联合,其中包含我的所有用户。我目前有一个带有单个重定向 URL 的 Cognito 应用程序客户端 https://localhost:PORT
我编写了与 Cognito 接口的 .NET Standard 帮助程序库。我有一个接口ICognitoAuthHelper,其中包含一个方法AuthenticateUserAsync(PoolRequest request)。 PoolRequest 对象有一个 AuthorizationCode 属性,用于身份验证代码授权流程。 AuthenticateUserAsync 函数实质上将授权代码发布到 Cognito 应用客户端 TOKEN 端点以接收 JWT,然后我让实用程序库对其进行解码以检索有关经过身份验证的用户身份的声明。
输入问题:我想利用我编写的这个实用程序库在我的 Xamarin.Forms 应用程序中进行身份验证。
这是一个简单的用例,以及我将如何(以及如何)在 ASP.NET Core MVC Web 应用程序中执行身份验证流程:
1) 我将“使用 Facebook 登录”按钮的点击重定向到 Cognito 应用客户端的 AUTHORIZE 端点
2) 当应用程序客户端重定向回我的重定向 URL (localhost) 时,我从 URL 中获取 code 查询参数,将其包裹在 PoolRequest 中,并将其提供给我的实用程序库。然后,如上所述,库会将授权代码 (code) 发布到 TOKEN 端点,以开始对返回的 JWT 进行解码。
3) 实用程序库的响应将包含用户声明,我可以重定向到个人资料页面、设置会话变量等。
如何通过 Xamarin.Forms 应用程序实现这种身份验证流程? 我曾考虑使用 WebView,但不确定如何捕获将出现的身份验证代码从 Cognito 应用程序客户端返回。我在 Xamarin 的应用程序客户端上将什么设置为重定向 URL?解码令牌集后,如何让WebView 导航到个人资料页面?
非常感谢您对此的任何帮助。
【问题讨论】:
标签: c# xamarin xamarin.forms amazon-cognito aws-userpools