gpt4 book ai didi

azure - 使用 Azure 中的托管身份进行服务到服务身份验证

转载 作者:行者123 更新时间:2023-12-03 02:40:39 25 4
gpt4 key购买 nike

从我的 Azure 函数中,我尝试访问已在 azure 中注册为应用程序的另一个自定义服务的 API 端点。我为我的 azure 功能启用了托管身份。我使用以下代码来获取 token :

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

似乎没问题,因为我得到了不记名 token 。但是当我尝试使用 token 调用服务本身时:

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">

当我使用获得的不记名 token 时,为什么会收到 HTML 登录页面作为响应?我是不是漏掉了一步?

最佳答案

通过在 Azure 中将 api 注册为应用程序,您已经做了正确的事情。您还必须添加身份验证中间件,例如

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(o =>
{
AuthenticationSettings settings = Configuration.GetSection("Authentication").Get<AuthenticationSettings>();
o.Authority = settings.Authority;
o.TokenValidationParameters = new TokenValidationParameters
{
ValidAudiences = new[]
{
settings.ClientId,
settings.ApplicationIdUri
}
};
});

然后在管道中添加“UseAuthentication”。看看这是否有帮助。

关于azure - 使用 Azure 中的托管身份进行服务到服务身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61430665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com