Apigee-成功进行oauth2身份验证后检索应用程序自定义属性

多诺万

我使用具有oauth2授权的Apigee配置了一个简单的API。在我的API中,我使用自定义ID来分隔不同的客户端。为了能够将此自定义ID检索到我的API,我在开发人员应用程序中创建了一个名为“ Tenant”的自定义属性。

我的oauth策略非常简单:

<OAuthV2 async="false" continueOnError="false" enabled="true" name="ValidateOAuth">
    <DisplayName>ValidateOAuth</DisplayName>
    <FaultRules/>
    <Properties/>
    <Attributes />
    <ExternalAuthorization>false</ExternalAuthorization>
    <Operation>VerifyAccessToken</Operation>
    <SupportedGrantTypes/>
    <Tokens/>
</OAuthV2>

当用户不使用我的API的公共网址时,我创建了一个条件流来应用此授权

<Flow name="Authorize">
    <Description/>
    <Request>
        <Step>
            <FaultRules/>
            <Name>ValidateOAuth</Name>
        </Step>
    </Request>
    <Response>
        <Step>
            <FaultRules/>
            <Name>EchoTenant</Name>
        </Step>
    </Response>
    <Condition>request.uri !~~ ".+(widget|tracker).+"</Condition>
</Flow>

在响应中,我准备了一个“分配消息”策略,以将我的tenantId添加到标头(其中xxx需要替换为正确的变量)

<AssignMessage async="false" continueOnError="false" enabled="true" name="EchoTenant">
    <AssignTo createNew="false" type="response"></AssignTo>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <Set>
        <Headers>
            <Header name="X-Tenant">xxx</Header>
        </Headers>
    </Set>
</AssignMessage>

在文档中,我看到了一个示例,该示例使用2个mores策略检索开发者属性(如电子邮件):accessEntity和extractVariables。我尝试使用它们,但没有成功...就我而言,我无法访问ApiKey,我只有一个accessToken我认为吗?accessToken是否可以检索我的自定义应用程序属性?

讨论中迈克·邓克Mike Dunker)写道

这实际上取决于您在运行代理时所拥有的信息。如果您使用OAuth或API密钥验证(通过OAuthV2和VerifyAPIKey策略),则在验证令牌或API密钥后会自动填充自定义属性。实际上,我发现我几乎不需要调用AccessEntity。

我尝试使用跟踪工具查看成功授权后发送的信息,但没有看到我的租户ID。也许对我的问题有更好的解决方案谢谢您的帮助!

akoo1010

使用VerifyAccessToken验证您的OAuth令牌。在VerifyAccessToken之后,尝试访问app.{custom_attribute_name}您可能不会在跟踪工具中看到此值,因为从VerifyAccessToken中填充了许多变量。

如果你没有在你的流程需要VerifyAccessToken(在大多数情况下,你会),也有GetOauthv2info它执行same--更多信息在这里该变量将是oauthv2client.{policy_name}.{custom_attribute_name}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

APIGEE外部OAuth 2.0授权

如何使用Apigee Edge策略进行JSON模式验证?

Apigee似乎不支持OAuth 2规范,为什么?

有在Apigee中进行DNS查找的政策吗?

WSO2与第7层或APIGee有何不同?

什么是 Apigee?

使用Apigee作为Auth0的身份验证存储替代品

apigee oauth2 每次都会生成新的访问令牌

内部应用程序的OAuth2身份验证

使用Azure移动应用程序进行自定义身份验证

Apigee的API产品配置中“允许的OAuth范围”的用途是什么?

如何从.NET / C#代码验证Apigee Edge生成的JWT令牌?

您如何正确返回Location标头,以及使用Apigee进行HATEOAS?

Apigee选项404

SoapMessageValidation策略Apigee

在自定义CredentialsAuthProvider中,在成功进行身份验证后,我想在Meta属性中发送其他数据

在Apigee中,如何使用AccessEntity策略以及稍后在Javascript中为开发人员获取自定义属性值?

离子应用程序:使用OAuth Provider进行的Firebase身份验证显示AUTH_DOMAIN而不是“自定义域”

邮递员:如何为使用Google OAuth2的Web应用程序进行身份验证?

自定义您使用OAuth2从Spring Security的身份验证错误

Google Cloud端点的自定义身份验证(而不是OAuth2)

Spring OAuth2自定义身份验证管理器ClassCastException

RESTful服务上的自定义手动Oauth2身份验证

Docker容器上的解析服务器的自定义身份验证(OAuth2)

在 Springfox Swagger 中为 OAuth2 身份验证添加自定义标头

django 中自定义用户身份验证和 oauth2 的问题

Spring OAuth2和AngularJS应用程序中的身份验证/授权

如何在网守(oauth2)中执行仅应用程序身份验证

使用apigee,我们可以使多个API相互交谈,然后将其作为单个API进行代理吗?