gpt4 book ai didi

c# - 如何使用 AWS Cognito 进行 : C# .net core API (APIGateway/Lambda) + Xamarin + Facebook 身份验证

转载 作者:太空狗 更新时间:2023-10-29 23:49:31 24 4
gpt4 key购买 nike

我有一个 .NET Core API(带有 EF 1.0 的 .NET Core 1.0.0),我通过将其作为 Amazon AWS 中的 Lambda 以无服务器方式使用。

该 API 功能齐全,但我想对其实现身份验证。主要用于将使用该 restful API 的 Xamarin 移动应用程序。Amazon 有一个名为 Amazon Cognito 的东西,您可以在其中使用“Cognito Federated Identities”,以便通过 Facebook、Google 等登录。

我不知道从哪里开始。我在互联网上搜索过,可以在这里和那里找到一些零碎的代码和文章,但我不知道如何将它们组合在一起。

如果我在我的 API 上实现 AWS Cognito 身份验证,是否仍然需要 API key ?或者我应该同时使用两者?将我的手机验证为系统的有效用户的 API key 和用于验证我的用户的 AWS Cognito?

我假设 AWS 身份验证是通过某种 AWS SDK 进行的,我还能从 Facebook 身份验证中受益吗?例如,我可以获取用户图片/相册/喜欢/等吗?或者我是否必须为此使用 Facebook SDK,如果是,我是在 API 级别还是在移动应用程序 (Xamarin) 级别使用 Facebook SDK?

如果有人曾经实现过类似的(或类似的)东西并能向我提供一些示例代码,那就太好了?或者至少是一些可以将我推向正确方向的东西,因为我有点迷路了。谢谢!

最佳答案

我还没有时间实现它,但当我实现时,我也会在此处发布代码。太糟糕了,我失去了 50 个赏金代表:(

If I implement a AWS Cognito Authentication on my api, is a API key still necessary? Or should I use both? API key to authenticate my mobile phone as a valid user to the system and AWS Cognito for authenticating my user? Or do I receive some sort of token?

使用 Cognito 联合身份将生成与 IAM 角色绑定(bind)的 IAM 凭证(访问 key 、 secret key 、 session token ),因此这意味着您必须在 API 网关上使用 IAM 身份验证。

您不能在同一 API 方法上使用多种身份验证类型。

I'm assuming that the AWS authentication happens from AWS SDK, can I still benefit from facebook authentication? For example can I get the user's pictures/albums/likes/etc. Or do I have to use a Facebook SDK for this, if so do I use facebook SDK on API level or Mobile app (xamarin) level

是的,您仍然可以从 Facebook 身份验证中受益。您将不得不使用 Facebook SDK。 AWS SDK 和 Cognito 只是使用 Facebook 作为验证用户是否正确的一种方式。至于您将在哪里使用 Facebook SDK,这将取决于您自己的应用程序架构。虽然根据我的经验,我发现它更多地用于客户端(移动)级别。

要实际使用和编码 Cognito,首先您需要创建一个身份池。在创建池时,根据您的用例,您可以取消选中“启用对未经身份验证的身份的访问”。
仅当您希望您的应用程序中的 guest 用户能够使用您的 API 时才这样做。但是,如果您只想要通过 Facebook 登录的用户,则应取消选中此选项。

然后在“身份验证提供商”下的 Facebook 选项卡下添加您的 Facebook 应用程序 ID。以下是有关如何为附加信息创建池的文档: http://docs.aws.amazon.com/cognito/latest/developerguide/getting-started-with-identity-pools.html#create-identity-pool

然后为了在您的应用程序中对此进行编码,将同时使用这两份文档。

1) 您首先需要设置凭据对象,然后一旦您通过 Facebook 登录并获取 token ,您就可以创建一个 addLogin 以将 token 添加到 Cognito。

2) 然后使用凭据对象将凭据传递给 API 网关。

http://docs.aws.amazon.com/cognito/latest/developerguide/getting-credentials.html#getting-credentials-1.xamarin http://docs.aws.amazon.com/cognito/latest/developerguide/facebook.html

为了将 IAM 身份验证与 API 网关结合使用,您需要执行一些称为 SigV4 签名的操作。
由于 API 网关没有为 dotNet/C# 生成的 SDK,您必须手动执行此操作。

本文档介绍了签名请求示例。这些示例使用 Python,不幸的是我们没有任何 C# 示例,但它为您提供了完成此操作所需的逻辑。

http://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html

关于c# - 如何使用 AWS Cognito 进行 : C# .net core API (APIGateway/Lambda) + Xamarin + Facebook 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44980822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com