use*_*794 4 java tfs soap oauth-2.0 azure-devops
我试图从我的命令行Java应用程序访问https://tfspreview.com SOAP接口.与本地TFS服务不同,此服务使用Live ID身份验证,这会导致通信失败,并且302重定向到其身份验证服务.我不知道如何继续在那里进行身份验证.
有什么指针吗?
<tl; dr>
您可以使用基本身份验证为Team Foundation Service提供无头体验.此外,如果您没有使用TFS SDK for Java,它可能会帮助您.
</ tl; dr>
一般来说,您可以使用三种类型的凭据进行身份验证,并确定用于身份验证的机制:
实时ID.如您所述,这需要您使用Web浏览器登录Windows Live并使用生成的OAuth令牌进行身份验证.
服务帐户.除了用户列表(由Live ID指定)之外,您的Team Foundation Service帐户还有一个特殊的用户帐户,可用于构建自动化等.每个Team Foundation Service帐户都有一个服务帐户,顾名思义,这是一个管理员帐户.
我们来看看每个选项:
实时ID:使用OAuth使用Live ID进行身份验证对于命令行应用程序来说将很困难.Visual Studio在此处执行的操作是将Internet Explorer打开到tfspreview.com,这最终将提示您输入Live ID凭据.此时,各种OAuth cookie将被设置到您的Web浏览器中.由于Visual Studio和Internet Explorer共享相同的底层HTTP连接机制,因此它可以使用这些相同的cookie.使用Java命令行客户端,您没有那么奢侈(除非您专门为Windows编写此文件并希望编写一些JNI来调用系统的HTTP库.)
那么你有什么选择呢?我想你可能会按照你给出的重定向进行操作 - 此时你最终会得到一个登录页面,你可以将你的凭证发布到最终,然后将一个OAuth cookie发回给你,然后你可以用它来进行身份验证.但我怀疑这可能不是你想要走下去的道路.我强烈怀疑你需要健康的JavaScript才能登录.
基本身份验证:这些需要在设置中执行额外步骤,但这些步骤简单明了.没有理由不使用这些.
服务帐户:由于缺少一个网页浏览器,不过,你是能够呈现WRAP令牌与您的服务凭据.您可以使用非常有用的TFS服务凭据查看器查看您帐户的服务凭据.使用您的服务帐户用户名和密码,您可以创建一个WRAP cookie来进行身份验证.但此时,您将作为服务帐户进行身份验证,而不是您的某个用户帐户.
如果您不想自己创建WRAP令牌,也可以使用Team Foundation Server SDK for Java来构建连接.只需将您的服务凭据交给您,就像UsernamePasswordCredentials创建时一样TFSTeamProjectCollection.即使您不想对服务器使用API方法,也可以HTTPClient从该连接获取原始数据,并且它将具有所有必需的配置集.如果我们将来向Team Foundation Service添加新的身份验证机制,那么依赖SDK也将使您受益,因为SDK的API不会发生显着变化.
| 归档时间: |
|
| 查看次数: |
2260 次 |
| 最近记录: |