从服务器端的 # 片段获取 OAuth 2.0 访问令牌

Get OAuth 2.0 access token from # fragment on server side

我有一个 Jersey Grizzly REST 服务器 运行。现在我收到来自 Microsoft 的带有访问令牌的 URL,但是此访问令牌作为参数放置在 # 符号之后。

https://myURL.com/getToken/pathParam/#access_token=QWERwtrrgertWRDGTGHssef....

当我收到来自 MS 的请求时,我无法以任何方式读出访问令牌,因为它已被过滤掉。有没有我可以停止此操作并将令牌作为参数获取的配置?

从片段的外观来看,您似乎正在尝试完成 OAuth 流程。我看到的问题是,您正在尝试实现一个针对客户端(或更准确地说,用户代理端)的流程,然后尝试访问服务器上的片段,这意味着在用户代理端。

#access_token.. 告诉我您正在尝试实施 Implicit Grant. This is not recommended if you have access to the more common Authorization Code Grant。不知道你用的是什么微软服务,如果他们提供Implicit Grant,那么他们应该也提供Authorization Code Grant,这实际上是所有Grant类型中最常见的。

如果你想坚持使用隐式授权,那么你需要实际处理客户端(用户代理)端的重定向,这意味着你要动手编写一些 Javascript 来回发令牌到服务器。你可以看一个例子 here.

我个人不会推荐它。你可以看看Jersey OAuth 2.0 client。它将有助于实施授权码流程。