4

コマンドラインJavaアプリからhttps: //tfspreview.comSOAPインターフェースにアクセスしようとしています。オンプレミスのTFSサービスとは異なり、これはLive ID認証を使用するため、認証サービスへの302リダイレクトで通信が失敗します。そこで認証を進める方法がわかりません。

ポインタはありますか?

4

1 に答える 1

8

<tl; dr>

基本認証を使用して、 TeamFoundationServiceにヘッドレスエクスペリエンスを提供できます。また、TFS SDK for Javaを使用していない場合は、役立つ場合があります。

</ tl; dr>

一般的に、認証に使用できる資格情報には3つのタイプがあり、認証に使用するメカニズムを決定します。

  1. ライブID。お気づきのとおり、これにはWebブラウザを使用してWindows Liveにログインし、結果のOAuthトークンを使用して認証する必要があります。

  2. 基本認証の目的で存在する、LiveIDにマップされた追加のパスワード。この追加のマッピングを設定する手順は、この機能に関する8月27日の発表で入手できます。

  3. サービスアカウント。ユーザーのリスト(Live IDで指定)に加えて、Team Foundation Serviceアカウントには、ビルドの自動化などに使用する特別なユーザーアカウントもあります。Team Foundationサービスアカウントごとに1つのサービスアカウントがあり、名前が示すように、これは管理者アカウントです。

各オプションを見てみましょう。

Live ID:OAuthを使用したLive IDでの認証は、コマンドラインアプリケーションでは困難になります。Visual Studioがここで行うことは、Internet Explorerをtfspreview.comに開くことです。これにより、最終的にLiveIDの資格情報を入力するように求められます。その時点で、さまざまなOAuthCookieがWebブラウザに設定されます。VisualStudioとInternetExplorerは、基盤となる同じHTTP接続メカニズムを共有しているため、これらの同じCookieを利用できます。Javaコマンドラインクライアントでは、そのような贅沢はありません(これをWindows専用に記述していて、システムのHTTPライブラリを呼び出すためのJNIを記述したい場合を除きます)。

それで、あなたの選択肢は何ですか?与えられたリダイレクトに従うことができると思います。その時点で、最終的にはログインページが表示され、クレデンシャルをPOSTして、最終的にOAuth Cookieが返送され、認証に使用できるようになります。しかし、これはおそらくあなたが降りたい道ではないのではないかと思います。ログインするには、かなりの量のJavaScriptが必要だと強く思います。

基本認証:これらはセットアップに追加の手順が必要ですが、単純で明白です。これらを使用しない理由はありません。

サービスアカウント:ただし、Webブラウザーがない場合、サービス資格情報を使用してWRAPトークンを提示できます。非常に便利なTFSServiceCredential Viewerを使用して、アカウントのサービス資格情報を表示できます。サービスアカウントのユーザー名とパスワードを使用して、認証に使用するWRAPCookieを作成できます。ただし、この時点では、ユーザーアカウントではなく、サービスアカウントとして認証しています。

自分でWRAPトークンを作成することに煩わされたくない場合は、Team Foundation Server SDKforJavaを使用して接続を構築することもできます。UsernamePasswordCredentialsを作成するときと同じように、サービスのクレデンシャルを渡すだけですTFSTeamProjectCollection。サーバーに対してAPIメソッドを使用したくない場合でも、HTTPClientその接続からrawを取得でき、必要なすべての構成が設定されます。SDKのAPIは大幅に変更されないため、将来、Team Foundation Serviceに新しい認証メカニズムを追加する場合は、SDKに依存することも役立ちます。

于 2012-07-19T15:11:20.213 に答える