首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用VersionOne REST的身份验证

不使用VersionOne REST的身份验证
EN

Stack Overflow用户
提问于 2014-04-03 21:23:39
回答 1查看 681关注 0票数 0

好的,我有个技术问题。我们在XStudio中开发了一个集成组件,这样我们就可以选择VersionOne的“故事”(XStudio中的"Requirements“)和”缺陷“(XStudio中的"Bugs”)。通过这种方式,您可以从XStudio执行测试和管理结果、度量等,但也可以使用VersionOne的项在XStudio中管理完整的可跟踪矩阵(Products -> Requirements -> Test -> Test and -> Bugs)。我们处理我们这边的联系。

为此,我们使用VersionOne的REST实现了连接器。一切都很好!非常快等。

我们使用来自VersionOne的免费服务器进行了测试,没有问题。我们的Java代码管理cookie,以便它使用“基本身份验证”协议进行身份验证,我们从VersionOne检索cookie,将其存储在本地CookieStore中,并在下一个请求中提供该cookie,这样我们就不必反复进行身份验证。从我们这边看,一切都很顺利。

代码语言:javascript
复制
The content looks like this:
{X-Instart-Request-ID=[7405870175418545839:SEN01-NPPRY09:1396448658:44], 
null=[HTTP/1.1 200 OK], 
Date=[Wed, 02 Apr 2014 14:24:17 GMT], 
Content-Length=[16063], 
Expires=[-1], 
VersionOne=[Ultimate/14.0.7.6706; Scrum], 
Set-Cookie=[.V1.Ticket.ncnuaaa=HFZlcnNpb25PbmUuV2ViLkF1dGhlbnRpY2F0b3LqgwAAB1hTdHVkaW+CjqLWdBzRCP8/N/R1KMorEByFu31RuGY+eqVCi1FHvTE=; path=/; HttpOnly], 
Connection=[keep-alive], 
Content-Type=[text/xml; charset=utf-8], 
Server=[Microsoft-IIS/8.0], 
Pragma=[no-cache], 
Cache-Control=[no-cache]}

但是..。当我们在客户环境上运行我们的代码时,我们不会因为任何原因而得到原始的cookie !?

代码语言:javascript
复制
{cache-control=[no-cache], 
content-type=[text/xml; charset=utf-8], 
null=[HTTP/1.1 200 OK], expires=[-1], 
content-length=[16063], 
server=[Microsoft-IIS/8.0], 
date=[Wed, 02 Apr 2014 12:34:08 GMT], 
pragma=[no-cache]}

当我们的代码从连接中获取标题字段时,我们尝试获取"Set-Cookie“字段,它找不到它,弹出窗口就会自动显示。

代码语言:javascript
复制
Map<String, List<String>> headerFields = connection.getHeaderFields();
List<String> cookiesHeader = headerFields.get("Set-Cookie");

弹出窗口要求验证(顺便说一句,在"www6.v1host.com/192.33.31.50“上,更多的是"www6.v1host.com/abcded”--也许这里有线索吗?)

如果我们在您的服务器上进行身份验证,一切正常进行,一切正常。但是,我们不应该再次进行身份验证,因为我们在前面的连接中进行了验证:

代码语言:javascript
复制
String plainAuth = username + ":" + password;
encodedAuth = ("Basic " + new String(Base64.encode(plainAuth.getBytes()))).replaceAll("\n", "");
connection.setRequestMethod("GET");
connection.setRequestProperty("Authorization", encodedAuth);
connection.setRequestProperty("Connection", "keep-alive");

所以,不确定这是否是因为身份验证不起作用(这将解释为什么cookie没有返回,弹出窗口要求用户显式验证),或者在cookie管理方面有一些特定的内容.

你知道这里会发生什么事吗?

此代码在使用Basic的许多其他不同的REST上运行良好。还有饼干。提前谢谢你,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-07 17:03:02

听起来你是为XQual工作的,XStudio的开发人员。如果是的话,请联系我。我们总是很高兴列出另一个集成

假设这只对1位以上的客户有效,我有几条建议:

  • 提供有意义的用户代理报头。这有助于我们积极主动地与您的整合。头甚至对于定制的一次性产品也是有用的,但是当涉及到其他供应商时,更重要的是。
  • 使用OAuth2进行身份验证。在Java中,OAuth2有很多很好的库。我们有一个即将到来的博客帖子,在这里我们将展示如何使用Apache Oltu来完成它。

关于你的具体问题,我有一些预感:

  • 您可能对VersionOne的部署方式期望过高。VersionOne是在前提和按需两方面提供的.您的客户可能会将"192.33.31.50“放入配置中,以表示on,而您正在期待一个随需应变的实例名称。还要注意,并不是所有的按需实例都在"www6“上。
  • 如果在前提条件下,VersionOne还为Windows集成身份验证提供了安装选项.在这种情况下,您可能没有得到预期的标头。这是我在上面推荐OAuth2的原因之一。OAuth2始终可用于API调用,而不考虑用户身份验证机制。

为了更好地诊断,您能分享一些代码来说明如何构造请求URL吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22849300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档