【问题标题】:Jax RS REST API - OAuth 2.0 and Control OriginJax RS REST API - OAuth 2.0 和控制源
【发布时间】:2014-01-26 01:02:30
【问题描述】:

我有一个使用 Java JAX-RS 构建的 REST API,该 API 将公开并受 OAuth 2.0 保护。

我计划从我正在构建的内部项目中使用此 API,因为它是我的 API,我不希望用户授权我调用此 API。

现在,我正在使用过滤器来检查访问令牌并根据我的 OAuth 提供程序验证它,配置示例:

<!-- Exposing the facility service as a REST service -->
<jaxrs:server id="restContainer" address="/">
    <jaxrs:serviceBeans>
      .. services beans
    </jaxrs:serviceBeans>
    <jaxrs:providers>
      <ref bean="oauthFilter"/> <-- filter to validate oauth
      <ref bean="apiUsageFilter"/> <-- filter to check api usage (integrated with 3scale)
      <ref bean="jacksonProvider" />
      <ref bean="exceptionMapper" />
    </jaxrs:providers>
    <jaxrs:extensionMappings>
      <entry key="json" value="application/json" />
      <entry key="xml" value="application/xml" />
      <entry key="html" value="text/html" />
    </jaxrs:extensionMappings>
    <jaxrs:features>
      <bean class="org.apache.cxf.feature.LoggingFeature"/>  
    </jaxrs:features>
</jaxrs:server>

我想知道是否可以实现一个新的过滤器来检查调用的来源,如果它来自列出的 ip(s)/domain(s) 则绕过 oauth,如果不是,则继续使用 oauth。

这种方法可行吗?这是一个好习惯吗?利弊?

谢谢!

【问题讨论】:

  • 帮助? :) 我得到的一个想法是实现一个过滤器,允许特定的(预定义的)应用程序 ID(或称为客户端 ID)通过绕过 oauth 交互来调用 API,并且它有效!但是调用者需要在调用的查询字符串中指定他们的客户端 ID/秘密 ID 的缺点,所以如果我需要在移动应用程序中使用它,它可以很容易地被任何开发人员嗅探并开始使用该 ID 绕过 oauth,看来我需要实现一个代理来隐藏这些客户端 ID/密钥。如果有人对我原来的问题有答案,我真的很感激:)

标签: java rest jax-rs


【解决方案1】:

解决方案很简单:我们在 OAuth 2.0 服务器中为服务器到服务器的应用程序实施了客户端授权授权,并为移动应用程序(没有后端)实施了资源所有者凭据授权。

【讨论】:

    猜你喜欢
    • 2014-03-10
    • 2017-11-12
    • 2016-12-18
    • 2015-04-25
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    相关资源
    最近更新 更多