Azure中具有托管身份的服务到服务身份验证

问题描述 投票:0回答:1

从我的Azure函数中,我正在尝试访问另一个已注册为Azure应用的自定义服务的API终结点。我为天蓝色功能启用了托管身份。我使用以下代码获取令牌:

var tokenIssuerAddress = @"uriOfServiceThatImTryingToConsume";
var tokenProvider = new AzureServiceTokenProvider("RunAs=App");
var accessToken = await tokenProvider.GetAccessTokenAsync(tokenIssuerAddress);

似乎很好,因为我得到了承载令牌。但是当我尝试使用令牌调用服务本身时:

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", $"{accessToken}");
    var response = await client.GetAsync($"{uriOfServiceThatImTryingToConsume}{path}");
}

我得到200 OK,但响应是一个以以下内容开头的HTML页面:

<!-- Copyright (C) Microsoft Corporation. All rights reserved. -->
<!DOCTYPE html>
<html dir="ltr" class="" lang="en">

<head>
    <title>Sign in to your account</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=2.0, user-scalable=yes">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="-1">
    <link rel="preconnect" href="https://aadcdn.msftauth.net" crossorigin>
    <meta http-equiv="x-dns-prefetch-control" content="on">
    <link rel="dns-prefetch" href="//aadcdn.msftauth.net">
    <link rel="dns-prefetch" href="//aadcdn.msauth.net">

当我使用获得的承载令牌时,为什么得到HTML登录页面作为响应?我错过了一步吗?

azure authentication azure-active-directory bearer-token azure-managed-identity
1个回答
0
投票

假设您获得的承载令牌有效且符合您的期望(可以随时将其decode查看其声明),那么您需要提供有关所呼叫的特定服务的更多详细信息。该服务可能需要2FA或具有您的承载令牌不符合的其他身份验证强度策略,从而重定向到继续进行身份验证。

© www.soinside.com 2019 - 2024. All rights reserved.