当前位置: 首页 > 知识库问答 >
问题:

基于cognito令牌的apigw认证/授权设计

锺离旻
2023-03-14

我真的很难找到一个AWS设计,让我:

  • 使用REST(不使用AWS sdk库)向cognito验证实体。
  • cognito的RESTAPI需要识别实体并根据实体返回结果。例如,像“getOrders”这样的api将返回与已登录的实体关联的订单

经评估的解决方案:

>

  • 具有作用域的oAuth身份验证无法解决此场景。实体必须使用appclientId和secret进行身份验证,因此不清楚如何区分实体(为所有可以登录的实体创建appclient对我来说没有意义)。实际上,这里所有实体都可以调用相同的api,但结果取决于标识本身,而不是范围。然而,通过这种设计,很清楚如何使用RESTAPI获取令牌。

    使用与实体关联的用户名和密码对cognito进行身份验证。这样,就可以在apigw上识别enity,并按预期返回结果。在这个场景中,不清楚如何使用RESTAPI(而不是使用aws的sdk)获取令牌。我发现了这篇文章:登录AmazonCognito用户池的REST(或CLI)API是什么

    我是否错过了其他最佳选择?在我看来,这是一个非常常见的情况,但我找不到一个像样的解决方案。您能告诉我应该使用哪种身份验证机制吗。

    提前谢谢你,马可

  • 共有1个答案

    葛勇锐
    2023-03-14

    Cognito公开了标准HTTPSendpoint,允许您绕过AWSAPI执行登录和令牌交换代码。它是托管UI的一部分。所有请求都将针对托管的UI域执行。有六个可用的endpoint:

    >

  • /log这是您触发Singing in的地方。您的用户将最终出现在您的托管UI页面(留档)。

    关闭托管UI端的会话(留档)。

    用于获取JWT令牌,通常在Web浏览器中(留档)。

    /oauth2/token与上述类似,但仅用于后端(文档)。

    用于获取有关已验证用户(留档)的信息。

    用于使提供的令牌(留档)无效。

    通过上述endpoint,您可以实现整个登录 /sign流,而无需使用AWS API。

  •  类似资料:
    • 当一个人试图使用azure AD承载令牌访问我们的系统时,这个获取和缓存资源令牌的工作流程是不存在的。 所以我的问题是,我如何使用承载令牌来启用它?如何才能像使用OpenIDConnect一样请求额外的资源令牌?是否可以使用ADAL从承载令牌获取授权代码?

    • 我有一个内部网站点,在我的组织内本地托管。同一站点还通过各种web服务公开一些数据。它是用ASP.NET MVC 5和WebAPI 2编写的,它是。NET 4.5,非核心。 目前,用户可以使用Windows身份验证登录网站,一旦身份验证,他们就可以访问API。然而,我还需要允许使用令牌访问API,以便它们可以被自动进程查询,因此我创建了一个页面,经过身份验证的用户可以在其中请求令牌。 我的意图是,

    • Serenity 使用一些抽象(abstractions)来与你的应用程序自身的用户身份验证和授权机制一起工作。 Serenity.Abstractions.IAuthenticationService Serenity.Abstractions.IAuthorizationService Serenity.Abstractions.IPermissionService Serenity.Abst

    • 请求地址 https://api.es.xiaojukeji.com/river/Auth/authorize 返回数据格式 JSON 请求方式 POST 是否需要登录 否 访问授权限制 调用方访问授权后,将返回的授权信息缓存半小时(缓存过期或调用服务时返回401=>access_token不合法或已过期,再重新申请授权),不要每次调用接口都申请一次授权。 请求参数 名称 类型 必选 描述 cli

    • 说明 调用方访问授权后,将返回的授权信息缓存半小时(缓存过期或调用服务时返回401=>access_token不合法或已过期,再重新申请授权),不要每次调用接口都申请一次授权。 地址URL /v1/Auth/authorize 支持格式 Json或普通form HTTP请求方式 POST 是否需要登录 否 请求参数 名称 类型 必选 描述 client_id string yes 申请应用时分配的

    • 我的web应用程序正在使用spring security进行基于数据库的身份验证和授权。我的配置如下:这是我的web.xml文件,我引入了applicationcontext.xml和applicationcontext-security.xml: 这是我的ApplicationContextSecurity.xml: