- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 .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/
我们正在使用 AWS API Gateway,我正在使用 CloudFormation 注册域和 A 记录,如下所示: Domain: Type: AWS::ApiGateway::Dom
我有以下 CF 模板 { "Conditions":{ "CreatedProdStage" : {...} } ... "Resources":{
我目前正在将 AWS Lambda 用于我的内部应用程序到使用 jreSTLess 实现的 spring 框架的应用程序调用。 应用程序调用的应用程序完美运行,延迟适中(理想情况下约为 10-15 毫
我们有一个返回 gzip 编码的端点。我们想要缓存该值,我们正在使用 ApiGateway 来为我们做到这一点。资源方法定义如下, GetManifestApiGatewayMethod: # ver
我正在处理swagger文件,要在aws apigateway中创建授权者。但是这次我会在swagger文件中提到一些函数和api。但是它不会在Apigateway中生效。一旦我删除了堆栈,它就会生效
在使用 Cognito 和 API Gateway 访问我们的 REST API 时遇到问题 我这辈子都找不到一个简单的例子来说明如何在我们的 AWS 服务器上调用安全的 REST API。 我打电话
我正在使用 AWS CDK 构建我的 lambda,我想从 lambda 的 CDK 堆栈注册端点。 我发现我可以使用 fromRestApiId(scope, id, restApiId) 获取现有
我使用此配置部署到“Prod”阶段: "ApiGatewayApi": { "Type": "AWS::Serverless::Api", "Properties": {
我有一个 API 网关集成,其中数据直接发送到 dynamodb。 x-amazon-apigateway-integration 定义了响应代码映射,因此我的目的是在客户端获取 dynamodb 抛
下面是我的cloudformation模板。我想将 aws:SourceVpc 转换为资源策略文档中的列表。我尝试了溢出但低于错误。 政策文件无效。请检查策略语法并确保主体有效。 (服务:Amazon
我有一个由多个 lambda 组成的状态机,我使用 Cloudformation 模板设置了这些 lambda,该模板执行一些处理并最终将文件保存到 S3;除非有要求,否则我不会在这里添加它,因为它可
我正在使用 vert.x 和 RxJava 开发 Apigateway。我想发送 2 个 Api 的响应式(Reactive)请求,从它们那里获取响应并通过 HttpServer 发送组合的 JSON
我正在使用 AWS SignV4 签署调用 AWS API Gateway 的请求。使用带 header 的请求不适合我的用例,因此主动使用签名网址和查询字符串。 我用过AWS Sample Pyth
我正在为我的电子商务应用程序创 build 计。它将拥有由 AWS Lambda 支持的多项服务。 Orderservice、InventoryService、PaymentService、Loggi
我能够使用 Cloudformation/无服务器应用程序模型定义和部署我的 API 网关 + Lambda 堆栈,并希望向我的 API 添加模型。 我已在 YAML 中创建了模型,但它似乎无法引用我
我看不到更新 AWS APIGateway 自定义域上的证书的方法。如果我使用新证书创建新的自定义域,则无法使用现有的 *.cloudfront.net 域。我将不得不更新 DNS 以指向新域。 有没
刚刚通过 AWS 学习 - 我有一个 APIGateway REST API 设置与 Lambda 代理集成。 API 定义了一个模型,并使用该模型在主体上请求验证设置。 假设模型是 { "$
没有找到任何有关如何实现 Cloudfront + MTLS 或 Api Gateway + MTLS 的资料。可能吗?如果没有,是否有其他方法可以使用 CloudFront + ApiGateway
我在 ApiGateway 中使用 Lambda 代理和 Cognito 用户池授权器。在 Lambda 函数中,我可以通过事件对象访问路径等变量。除此之外,我想访问经过身份验证的用户的声明。在它写的
如何使用 AWS-CDK 从 apigateway 迁移到 apigatewayv2? 具体来说:我正在使用 LambdaRestApi和 restApiId和 deploymentStage从那个资
我是一名优秀的程序员,十分优秀!