Xamarin Forms 身份验证 - 身份验证提供程序?

Xamarin Forms authentication - Authentication Providers?

这里是关于身份验证的新手问题。我习惯于将身份验证合并到我的应用程序后端服务器中,例如 Spring 安全身份验证。我真的不明白身份验证提供程序是如何工作的。

我担心的是,不知何故每个提供商只能验证自己的帐户,即 google 只能验证 gmail 帐户,而 Azure Active directory 只能验证某种 Microsoft 注册帐户?我不愿意使用 oauth,因为作为用户,我总是对从未知提供商处登录某些游戏或应用程序感到疑惑,因为我不确定我是否只是将我的 gmail 或 facebook 帐户密码提供给了 rando。

我很乐意让人们选择使用 Oath,但如果那是唯一的选择,我就不太舒服了。我希望人们能够给我他们想要的任何电子邮件地址,以及他们仅为我的网站创建的密码。

还有这些问题:如果我使用身份验证提供商,我可以获得用于登录的实际电子邮件地址吗?还是我只能得到一个令牌?
如果我要构建自己的身份验证服务以便我可以接受任何电子邮件域作为用户名,那么在 Xamarin 表单中最容易实现的是什么,有人可以指点我教程或其他内容吗?

感谢建议。

是的,您是对的,每个身份提供者都提供对自己的用户进行身份验证的能力; Google OAuth 支持 Google 帐户,Azure Active Directory 支持 Microsoft 工作和学校帐户,Microsoft 帐户支持 Microsoft 个人帐户,等等。

除了我们通常所说的 'local accounts' 或专门为给定应用程序创建的帐户之外,关于如何在您的应用程序中添加对这些身份提供商的支持,您还有很多选择。我将列出一些方法:

  • 您可以自己编写所有代码以分别与每个身份提供者集成,并构建您自己的本地帐户解决方案。
  • 您可以在 Xamarin Forms 中使用 SDK/library,这有助于在您的应用中使用多个身份提供者。 Xamarin.Auth 包历来为 Xamarin 应用程序服务于此目的。它为 Facebook、Google、Microsoft 和 Twitter 提供身份验证功能。
  • 您可以使用专门的云服务为您的应用程序提供身份验证服务。一些示例包括 Azure Mobile Apps, Firebase Auth, Gigya, and more. The exact identity providers supported and the level of support for Xamarin/Xamarin Forms will vary across each one. Azure AD B2C is another option that I know supports Xamarin Forms 以及 Facebook、Google、Twitter 和本地帐户(免责声明:我在 AAD B2C 上工作)。这些服务有时有免费层级和付费层级,因此您可以比较和对比每个层级。
  • 如果您愿意,您也可以使用 Identity Server 等开源代码构建自己的身份验证服务。

这绝对取决于您走哪条路线,但一般来说,每种解决方案都会在用户身份验证时为您提供一些用户配置文件信息的访问权限。对于 Azure AD B2C,您可以在您的应用程序收到的令牌中配置返回给您的应用程序的声明。对于其他服务,您可能需要进行 REST API 调用以获取一些用户数据,例如电子邮件地址。

HTH.