web-dev-qa-db-ja.com

HTTPS://test113.onmicrosoft.com/FTPという名前のアプリケーションがtest113.onmicrosoft.comという名前のテナントで見つかりませんでした

Azure ADに対してアプリケーションを認証する必要があります。 Web APIを作成し、Azure ADアプリケーションセクションに追加しました。マニフェストファイルを変更し、Web APIを作成してAzure ADで認証し、次のコードを含むWindowsフォームを作成しました。

 private async void button1_Click(object sender, EventArgs e)
 {
    string authority = "https://login.windows.net/test113.onmicrosoft.com";
    string resourceURI = "https://test113.onmicrosoft.com/ftp";
    string clientID = "5177ef76-cbb4-43a8-a7d0-899d3e886b34";
    Uri returnURI = new Uri("http://keoftp");

    AuthenticationContext authContext =
        new AuthenticationContext(authority);
    AuthenticationResult authResult =
        authContext.AcquireToken(resourceURI, clientID, returnURI);

    string authHeader = authResult.CreateAuthorizationHeader();

    // don't do this in prod
    System.Net.ServicePointManager.ServerCertificateValidationCallback =
            ((s, c, c2, se) => true);

    HttpClient client = new HttpClient();
    HttpRequestMessage request =
        new HttpRequestMessage(HttpMethod.Get, "https://localhost:44300/api/tasks");
    request.Headers.TryAddWithoutValidation("Authorization", authHeader);
    var response = await client.SendAsync(request);
    string responseString = await response.Content.ReadAsStringAsync();
    MessageBox.Show(responseString);
}

例外があります:

タイプ「Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException」の例外がMicrosoft.IdentityModel.Clients.ActiveDirectory.dllで発生しましたが、ユーザーコードでは処理されませんでした

追加情報:AADSTS50001: https://test113.onmicrosoft.com/ftp という名前のアプリケーションがtest113.onmicrosoft.comという名前のテナントで見つかりませんでした。これは、アプリケーションがテナントの管理者によってインストールされていないか、テナント内のユーザーによって同意されていない場合に発生する可能性があります。認証リクエストを間違ったテナントに送信した可能性があります。

トレースID:e782d60e-b861-46a3-b32b-f3df78396bd0相関ID:b4809815-2755-4de1-bd1b-0221d74fd0f0タイムスタンプ:2016-03-17 11:20:08Z

11
Rinu

リクエスト内のリソースとは、特定のテナントでアクセスしたいリソースを意味します。ネイティブクライアントがAzure Active Directoryからトークンを取得する必要がある場合は、トークンが必要なリソースを指定する必要があります。このシナリオでは、クライアントアプリケーションがWeb APIにアクセスする必要があるため、Web APIのAPP ID URIがリソース名として使用されます。トークンを取得したら、リソースにアクセスできるURL(この場合はWeb APIのアドレス)も知る必要があります。例:

// Resource settings this application wants to access
private string resource = "https://cloudalloc.com/CloudAlloc.WebAPI";
private Uri WebAPIUri = new Uri("https://localhost:44313");

これらの設定はどちらも、Azure管理ポータルのWeb APIアプリケーションの[構成]ページのシングルサインオンセクションにあります。

詳細については こちら をクリックしてください。

11
Nan Yu