如何使用Java命令行应用程序来验证https://tfspreview.com(Microsoft

2019-09-19 18:37发布

我试图访问https://tfspreview.com从我的命令行的Java应用程序SOAP接口。 不同于本地TFS服务,这其中使用Live ID的认证,这使得导致失败,以302重定向到验证服务的通信。 我不知道如何与认证那里继续。

任何指针?

Answer 1:

<TL;博士>

您可以使用基本身份验证 ,以提供一个无头的经验, 团队基础服务 。 另外,如果你不使用TFS SDK的Java ,它可以帮助你。

</ TL;博士>

一般来说,有三种类型,您可以使用验证凭据,并确定你使用的身份验证机制:

  1. 一个Live ID登录。 正如你提到的,这需要你登录到一个Windows Live与网页浏览器,并使用产生的OAuth凭证进行身份验证。

  2. 另外一个密码映射到Live ID,它存在于基本身份验证的目的。 说明设立这个额外的映射在可8月27日公布有关此功能 。

  3. 服务帐户。 除了用户的列表(由Live ID的指定),您的团队基础服务帐户也有它使用的东西像构建自动化等的特殊用户帐户。 没有为每个团队基础服务帐户一个服务帐户和 - 顾名思义 - 这是一个管理员帐户。

让我们来看看每个选项:

现场ID:与使用OAuth一个Live ID身份验证将是很难为你的命令行应用程序。 什么的Visual Studio这里确实是打开Internet Explorer,以tfspreview.com ,这最终会提示你输入你的Live ID凭据。 在这一点上,不同的OAuth饼干将设置到Web浏览器。 由于Visual Studio和Internet Explorer中共享同一基础HTTP连接机制,它可以利用这些相同的cookie。 随着Java命令行客户端,你没有这样的奢侈(除非你写这本专为Windows和希望写一些JNI调用系统的HTTP库,。)

所以,你有什么选择? 我想这是可能的,你可以按照你提供的重定向 - 此时,你最终会得到一个登录页面,你可以发布您的凭据,并最终取得OAuth的cookie发回给你,你可以再用于身份验证。 但我怀疑,这可能不是你想要去的道路,虽然。 我强烈怀疑,有让你登录需要的JavaScript健康的剂量。

基本身份验证 :这些都需要在安装一个额外的步骤,但浅显。 我们没有理由不使用这些。

服务帐户 :由于缺少一个网页浏览器,但是,你提出一个WRAP令牌与您的服务凭据。 您可以查看使用非常有帮助为您的帐户服务凭据TFS服务凭证查看器 。 与您的服务帐户的用户名和密码,您可以创建一个WRAP的cookie进行身份验证。 但在这一点上,你作为身份验证的服务帐户,用户帐户的一个也没有。

如果你不想惹创建WRAP令牌自己,你也可以使用的Team Foundation Server SDK的Java建立一个连接。 只需用手在为您服务的凭证UsernamePasswordCredentials当你创建一个TFSTeamProjectCollection 。 即使你不想使用对服务器的API方法,你可以得到的原始HTTPClient从该连接,它将拥有所有必要的配置设置。 如果我们在将来添加新的身份验证机制,在Team Foundation Service作为SDK的API应该不会显着改变以在SDK的依赖关系也将有利于你。



文章来源: How to authenticate to https://tfspreview.com (MIcrosoft-hosted TFS) using Java command line application?