![](/img/trans.png)
[英]How to add custom header and bearer token for HttpRequest in Mock Test for Azure Function
[英]Bearer Token by custom field in Header
我的端點使用令牌來授權執行,但 header“授權”字段用於網關令牌。 我想設置一個不同的 header 密鑰來傳遞和讀取我端點中的令牌並避免沖突。
這是我的 controller 代碼:
[HttpPost]
[ApiVersion("1.0")]
[ProducesResponseType(typeof(ErrorMessageDto), 500)]
[Authorize(AuthenticationSchemes = "Bearer")]
[ProducesResponseType(typeof(NavMenuItemReturnDto), 201)]
public IActionResult CreateNavMenuItem(NavMenuItemUpdateCreateDto newNavMenuItem)
{
try
{
return StatusCode(201, _navMenuItemsBL.CreateNewNavMenuItem(newNavMenuItem).Result);
}
catch (Exception ex)
{
return StatusCode(500, new ErrorMessageDto { Error = ex.Message });
}
}
這是我的啟動代碼:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer("Bearer", options =>
{
options.Authority = Configuration.GetSection("JwtAuthority").Get<string>();
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = false,
ValidateAudience = false,
RequireExpirationTime = false,
ValidateLifetime = false,
ValidateIssuer = false,
};
});
有什么建議么? 謝謝您的幫助
您能否通過添加多個身份驗證模式來實現您的目標?
一個例子如下:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Audience = "https://localhost:5000/";
options.Authority = "https://localhost:5000/identity/";
})
.AddJwtBearer("AzureAD", options =>
{
options.Audience = "https://localhost:5000/";
options.Authority = "https://login.microsoftonline.com/eb971100-6f99-4bdc-8611-1bc8edd7f436/";
});
}
默認認證方案JwtBearerDefaults.AuthenticationScheme只注冊了一個JWT承載認證。 必須使用唯一的身份驗證方案注冊其他身份驗證。
下一步是更新默認授權策略以接受兩種身份驗證方案。 例如:
services.AddAuthorization(options =>
{
var defaultAuthorizationPolicyBuilder = new AuthorizationPolicyBuilder(
JwtBearerDefaults.AuthenticationScheme,
"AzureAD");
defaultAuthorizationPolicyBuilder =
defaultAuthorizationPolicyBuilder.RequireAuthenticatedUser();
options.DefaultPolicy = defaultAuthorizationPolicyBuilder.Build();
});
由於默認授權策略被覆蓋,因此可以在控制器中使用 [Authorize] 屬性。 然后 controller 接受第一或第二發行人發出的帶有 JWT 的請求。
現在您有了默認值和 AzureAD
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.