在同一应用程序中实施 Stormpath 表单登录/身份验证以及 REST oAuth 身份验证时遇到问题

2024-03-30

我们将 Stormpath 与 Java 结合使用,并尝试在同一应用程序上将表单登录与 REST API 身份验证结合起来。

我已经按照此处所述设置了stormpath servlet插件https://docs.stormpath.com/java/servlet-plugin/quickstart.html https://docs.stormpath.com/java/servlet-plugin/quickstart.html...这工作得很好。

现在,在同一个应用程序上,我们有 API,我使用stormpath 实现了 oAuth 身份验证,请参阅此处http://docs.stormpath.com/guides/api-key-management/ http://docs.stormpath.com/guides/api-key-management/

通过发送访问令牌的第一个请求可以正常工作Basic Base64(keyId:keySecret)在请求标头中和grant_type = client_credentials在身体里。访问令牌返回得很好。但是尝试使用标头验证后续请求Bearer <the-obtained-access-token>之前甚至没有点击应用程序 返回以下 json 错误消息...

{
    "error": "invalid_client",
    "error_description": "access_token is invalid."
}

这很令人困惑,因为我已经在整个应用程序中设置了断点,并且我非常确定在 Stormpath 启动并返回此错误之前 API 请求不会到达应用程序中的任何位置。即使stormpath在到达REST接口之前以某种方式拦截了请求,这条消息对我来说也没有任何意义,因为我肯定会使用从第一次调用获得的有效访问令牌来进行后续的API调用以获取访问权-令牌。

我已经不知道为什么会发生这种情况,但我怀疑它可能与stormpath配置有关,尤其是与组合有关 Web 视图的登录/身份验证和 REST 端点的 oAuth 身份验证形式。话虽如此,这就是我的stormpath.properties 的样子。希望这可以帮助指出我可能做错的任何事情。

stormpath.application.href=https://api.stormpath.com/v1/applications/[app-id]
stormpath.web.filters.authr=com.app.security.AuthorizationFilter
stormpath.web.request.event.listener = com.app.security.AuthenticationListener

stormpath.web.uris./resources/**=anon
stormpath.web.uris./assets/**=anon
stormpath.web.uris./v1.0/**=anon
stormpath.web.uris./** = authc,authr
stormpath.web.uris./**/**=authc,authr

对此提供帮助将不胜感激。


该问题可能与不正确的请求有关。

您可以在您的应用程序中尝试此代码吗?:

 private boolean verify(String accessToken) throws OauthAuthenticationException {
     HttpRequest request = createRequestForOauth2AuthenticatedOperation(accessToken);
     AccessTokenResult result = Applications.oauthRequestAuthenticator(application)
        .authenticate(request);
     System.out.println(result.getAccount().getEmail() + " was successfully verified, you can allow your protect operation to continue");
     return true;
 }

 private HttpRequest createRequestForOauth2AuthenticatedOperation(String token) {
     try {
         Map<String, String[]> headers = new LinkedHashMap<String, String[]>();
         headers.put("Accept", new String[]{"application/json"});
         headers.put("Authorization", new String[]{"Bearer " + token});
         HttpRequest request = HttpRequests.method(HttpMethod.GET)
             .headers(headers)
             .build();
         return request;
     } catch (Exception e) {
         e.printStackTrace();
         return null;
     }
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在同一应用程序中实施 Stormpath 表单登录/身份验证以及 REST oAuth 身份验证时遇到问题 的相关文章

随机推荐

  • 分层数据库选择/插入语句 (SQL Server)

    我最近偶然发现一个问题 从一个表中选择关系详细信息并插入到另一个表中 我希望有人可以提供帮助 我有一个表结构如下 ID PK Name ParentID br 1 Myname 0 br 2 nametwo 1 br 3 namethree
  • 如何修复错误:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException:

    我在 Eclipse 中有一个项目 当我同步项目时 我导出到 gradle 项目并在 Android Studio 中打开 错误 java util concurrent ExecutionException com android ide
  • Rstudio服务器安装el Capitan

    大约一年前 我曾经在我的 Mac 上运行 rstudio 服务器 不过我用的不多所以就删掉了 但是 现在我需要重新设置它 与此同时 我已更改为 el Capitan 以及有关的说明https iangow wordpress com 201
  • 将部分日期存储在数据库中

    我想将部分日期存储在关系数据库 MySQL PostgreSQL 等 中 例如 输入可能只是年份 2013 年和月 2013 08 或年 月 日 2013 08 29 我不能只使用普通的 DATE 类型 因为年份将扩展到 2013 01 0
  • 如何配置 Visual Studio 2017 来运行 Gstreamer 教程?

    我使用的是 Windows 10 我无法配置 Visual Studio 2017 来运行基本的 Gstreamer 教程 我收到诸如 无法打开 gst gst h 之类的错误 我正在使用 gstreamer 1 0 请帮忙 朋友你好 首先
  • XML 文档中需要转义哪些字符?

    XML 文档中必须转义哪些字符 或者在哪里可以找到这样的列表 如果您使用适当的类或库 他们将为您进行转义 许多 XML 问题都是由字符串连接引起的 XML 转义字符 只有五个 quot apos lt lt gt gt amp 转义字符取决
  • 如何判断 Windows 用于启动哪个磁盘

    我需要找到一种方法来以编程方式确定 Windows 使用哪个磁盘驱动器启动 换句话说 我需要一种从 Windows 中确定 BIOS 使用哪个驱动器来启动整个系统的方法 Windows 是否公开了一个接口来发现这一点 鉴于 Windows
  • C# 中的解析器 FxCop 结果 Xml 文件

    我以编程方式使用VS2010和Fxcop 10 0 fxcopcmd exe 来生成fxcop分析结果 xml文件 我想要解析器 xml 文件来获取 fxcop 分析结果 在java语言中我发现了这个 http grepcode com f
  • 使用react-router-relay类型增强react-router模块

    默认的react router是这样使用的 import as React from react import Router Route hashHistory from react router const routing
  • Flutter WebView 插件 - 如何处理本地存储变量

    背景 我正在开发一个移动应用程序 其中使用 WebViewScaffold 加载在线目录 此特定目录提供初次访问时的导游服务 问题 每次我导航到目录 WebView 时 游览都会从头开始 这会冻结用户 直到游览完成 我怎样才能避免这种情况发
  • 按变量将 Dunnett 检验中的 P 值提取到表中

    我有一个包含 25 列的列表 我正在通过 Dunnett 测试按组 4 个级别 对其进行测试 我能够使用sapply函数让 Dunnett 按组对所有列起作用 但在将 p 值拉入表中时遇到一些问题 下面是我尝试使用 iris 数据集执行的操
  • 使用 Android Google Maps API 显示热图图层

    我正在 Android 中做一个项目 其中我给出了一个地理点列表 纬度 经度 每个点都有一个关联的海拔 高度 值 我的任务是根据点的高度值创建具有不同颜色的给定地图的热图 有人知道现有的图书馆可以做同样的事情吗 或者 如果有人能够指导如何实
  • 使用 TextFileColumnDataTypes 打开每列数据格式正确的 CSV 文件?

    我正在使用下面的 VBA 代码在 Excel 中打开 csv 文件 该代码模拟 Data Text to Columns 命令 在代码中需要为属性指定一个数组文本文件列数据类型 它为 csv 文件中的每一列指定一个数据格式 2 文本格式 但
  • 使用 linq2db 执行原始 SQL 字符串

    使用 linq2db https github com linq2db linq2db https github com linq2db linq2db 我可以执行原始 SQL 字符串并获取结果吗dynamic 我正在寻找类似 ADO NE
  • 无法在此小部件上方找到正确的提供程序 - Flutter

    我是 Flutter 新手 我在 Flutter 应用程序中使用 Provider 我的 main dart 文件如下所示 import package flutter material dart import package provid
  • 绝对定位忽略父级的填充

    如何使绝对定位元素尊重其父元素的填充 我想要一个内部 div 延伸到其父级的宽度 并放置在该父级的底部 基本上是一个页脚 但孩子必须尊重父母的填充 但它没有这样做 孩子被压在父母的边缘 所以我想要这个 但我得到这个 div style ba
  • 使用jquery检查多个复选框

    我有一个类似的数组 var values 1 3 4 5 我有复选框列表 div div
  • “设置时间戳”怎么会是慢查询呢?

    我的慢查询日志充满了如下条目 Query time 1 016361 Lock time 0 000000 Rows sent 0 Rows examined 0 SET timestamp 1273826821 COMMIT 我猜是set
  • CapnProto 最大文件大小

    目前我们正在使用 ProtocolBuffers 在 python 和 C 之间交换数据 然而 我们遇到了协议缓冲区的最大文件大小限制 并正在考虑将所有内容切换到 Cap n Proto 但是 由于它与协议缓冲区有些相关 我想知道Cap n
  • 在同一应用程序中实施 Stormpath 表单登录/身份验证以及 REST oAuth 身份验证时遇到问题

    我们将 Stormpath 与 Java 结合使用 并尝试在同一应用程序上将表单登录与 REST API 身份验证结合起来 我已经按照此处所述设置了stormpath servlet插件https docs stormpath com ja