我正在尝试访问https://tfspreview.com https://tfspreview.com我的命令行 Java 应用程序中的 SOAP 接口。与本地 TFS 服务不同,此服务使用 Live ID 身份验证,这会导致通信失败并通过 302 重定向到其身份验证服务。我不知道如何在那里进行身份验证。
有什么指点吗?
您可以使用基本身份验证 http://tfspreview.com/en-us/home/news/2012/aug-27/提供无头体验团队基础服务 http://tfspreview.com。另外,如果您不使用适用于 Java 的 TFS SDK http://www.microsoft.com/en-us/download/details.aspx?id=22616,它可能会帮助你。
;博士>
一般来说,您可以使用三种类型的凭据进行身份验证,这决定了您用于身份验证的机制:
实时 ID。正如您所指出的,这需要您使用 Web 浏览器登录 Windows Live 并使用生成的 OAuth 令牌进行身份验证。
映射到您的 Live ID 的附加密码,该密码的存在是为了进行基本身份验证。有关设置此附加映射的说明,请参阅8 月 27 日关于此功能的公告 http://tfspreview.com/en-us/home/news/2012/aug-27/.
一个服务帐户。除了用户列表(由 Live ID 指定)之外,您的 Team Foundation Service 帐户还有一个特殊的用户帐户,用于构建自动化等操作。每个 Team Foundation Service 帐户都有一个服务帐户,顾名思义,这是一个管理员帐户。
让我们看一下每个选项:
Live ID:
对于命令行应用程序来说,使用 OAuth 通过 Live ID 进行身份验证将会很困难。 Visual Studio 在这里所做的是打开 Internet Explorertfspreview.com http://tfspreview.com,最终会提示您输入 Live ID 凭据。此时,各种 OAuth cookie 将被设置到您的 Web 浏览器中。由于 Visual Studio 和 Internet Explorer 共享相同的底层 HTTP 连接机制,因此它可以使用这些相同的 cookie。使用 Java 命令行客户端,您就没有那么奢侈了(除非您专门为 Windows 编写此程序,并且想要编写一些 JNI 来调用系统的 HTTP 库。)
那么你有什么选择呢?我想您可能可以遵循给定的重定向 - 此时您最终将获得一个登录页面,您可以将您的凭据发布到该页面,并最终获得一个发送回给您的 OAuth cookie,然后您可以将其用于身份验证。但我怀疑这可能不是你想要走的路。我强烈怀疑您需要大量的 JavaScript 才能登录。
基本认证:
这些需要额外的设置步骤,但简单明了。没有理由不使用这些。
服务账户:
但是,由于缺少网络浏览器,您are能够提出一个WRAP代币 http://wiki.oauth.net/w/page/12238537/OAuth%20WRAP与您的服务凭证。您可以使用非常有用的命令查看您帐户的服务凭证TFS 服务凭证查看器 http://blog.hinshelwood.com/tfs-service-credential-viewer/。使用您的服务帐户用户名和密码,您可以创建 WRAP cookie 进行身份验证。但此时,您正在以服务帐户身份进行身份验证,而不是您的用户帐户之一。
如果您不想自己创建 WRAP 令牌,您也可以使用适用于 Java 的 Team Foundation Server SDK http://www.microsoft.com/en-us/download/details.aspx?id=29933建立连接。只需将您的服务凭据作为UsernamePasswordCredentials
当你创建一个TFSTeamProjectCollection
。即使您不想对服务器使用 API 方法,您也可以获得原始数据HTTPClient
从该连接,它将具有所有必要的配置集。如果我们将来向 Team Foundation Service 添加新的身份验证机制,那么依赖 SDK 也将使您受益,因为 SDK 的 API 不应发生显着变化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)