谷歌

如何自定义和验证Apigee中的granttype访问令牌的JSON消息

ISTOCK 641204328

概述

此用例介绍了如何自定义和验证granttype客户凭证的JSON消息 - AccessToken。

什么是GrantType客户凭证?

客户端向APIEE的API调用,其中包括客户ID和客户端秘密,以从注册开发人员应用程序中获取访问令牌。此外,必须在请求中传递查询参数grant_type = client_credentials。但是在此博客中,我们将在JSON有效载荷中发送clientId/secret和GrantType。

序列图

序列图

  • 客户端应用程序将JSON请求发送到Apigee Edge以获取访问令牌。请求包含clientId,clientsecret和GrantType。
  • 请求针对OpenAPI规范(Swagger)验证的数据。
  • 如果验证失败会发送错误响应。
  • 否则Edge Authentication ClientId和Clienterecret。
  • 如果身份验证失败会发送错误响应。
  • else Edge返回自定义的JSON成功响应。

所需的应用程序来处理本用户酶

  • 邮递员或任何客户申请
  • Apigee Edge

问题定义

本文档有助于解决技术挑战,同时配置客户端授予赠款

目标听众

在Apigee Edge中拥有知识(开发人员/管理员)的人。

打开API规范

创建一个OpenAPI规范来定义赠款类型访问令牌RESTFUL API的结构。根据需要的请求元素来定义client_id,client_secret和grant_type。Access_Token,jearded_at和expires_in是成功响应元素。

OpenApispec

代理配置

使用开放API规范创建无目标代理

步骤1:开发 - >代理 - >无目标 - >单击使用OpenAPI规格步骤2:定义名称,basepath和说明步骤3:选择策略作为通行证

ProxyConfig

策略配置

OpenAPI规格验证策略
OAS验证策略以验证开放API规范的传入JSON消息。

添加OpenAPI规格验证策略并导入Open API规格(Swagger)以验证输入消息。

OAS JSONVALIDATION

提取变量策略
添加提取变量策略以从InputMessage设置ClientId/clientsecret/gratTypeas流量变量。

EV流动

下面是提取流量变量的摘要,

 <变量名=“ clientId”>  $。client_id     $。client_secret    <变量名称=“ granttype”>  $。grant_type   

JavascriptPolicy
添加JavaScript策略将clientId/clientsecret设置为formparam和granttype to queryparam。因为默认情况下,oauth2策略会从中读取客户端。

var用户名= context.getVariable(“ clientId”);var password = context.getVariable(“ clientsecret”);var grantType = context.getVariable(“ grantType”);context.setVariable(“ request.queryparam.grant_type”,granttype);context.setVariable(“ request.formparam.client_id”,用户名);context.setVariable(“ request.formparam.client_secret”,密码);

OAuth2政策
添加OAuth2策略以生成访问令牌。本策略在发送访问令牌之前先验证客户端精力。在下面的配置中更新到OAuth2策略,

 generateaccesstoken    client_credentials    request> quertyparam.grant_type 

request.queryparam.grant_type - 此标签告诉OAuth2策略从queryparam grant_type获取granttype值。

- 此标签告诉OAuth2策略不会自动构成响应。

分配消息策略
添加分配消息策略以创建自定义的JSON成功响应。将以下摘要更新为策略,

  200   ok   {“ access_token”:“ {oauthv2acccestecestoken.generateaerateaccesstokencesstokenctokenccesstokenccesstokenclient.access_access_token}oauthv2accestoken.generateaccesstokenclient.issued_at}“,” expires_in”:

添加另一个分配策略来处理自定义的JSON错误响应。在摘要下方更新到策略,

  500  内部服务器错误 <有效载荷contenttype =“ application/json”> {“ errorresponse”:{“ erriveRormessage”:{“ errormessage”:{evavejson(errial.message)(error.message)}}}}}}}“,” errorcode“:” 20030“}}   

故障规则
添加DefaultFaultrule步骤处理错误情况。仅当代理流中存在异常 /错误时,才会执行它。请参阅错误响应分配消息策略以发送自定义错误响应。

    am-errorsponse     ……。………….. 

流设计

FlowDesign

部署和测试

使用Postman Collection部署代理和测试。

快乐的道路场景
Happypath

JSON验证错误
OAS策略验证了传入的请求,并为Grant_Type字段抛出了验证错误。
失败的录音

身份验证故障错误
OAuth2策略验证了注册用户的客户端限制。如果客户端无效,则会引发错误。
失败

结论

该博客向您展示了如何自定义和验证granttype客户端凭证以获取访问令牌。有关客户凭证GrantType的更多信息,请参阅Apigee文档。

参考链接:https://docs.apigee.com/api-platform/security/oauth/oauth-20-client-credentials-grant-type

关于作者

来自作者的更多

关于“如何自定义和验证Apigee中的授予访问令牌的JSON消息”的想法

发表评论

该站点使用Akismet减少垃圾邮件。了解如何处理您的评论数据

订阅每周博客摘要:

报名