Bil*_*oel 5 azure-ad-b2c asp.net-core
我正在使用B2C保护Asp.Net Core中的WebApi。我的代码如下。我需要验证令牌还是中间件为我做令牌?我认为,如果每个人都必须这样做,对我来说找到一些示例代码会更容易,但是我似乎对此没有任何真正的方向。
但是,此B2C文档指出我的api进行了验证。
我找到了一个示例,但不是针对Core的,他们正在使用CertificateValidator = X509CertificateValidator.None。那不是目的吗?而另一位在这里样品,他们正在这样做。
我不是必须要拥有B2C的签名密钥吗?
我可以从中总结出一个解决方案,但是我真的需要这样做吗?
提前致谢。
app.UseJwtBearerAuthentication(new JwtBearerOptions()
{
AuthenticationScheme = Constants.B2CAuthenticationSchemeName,
AutomaticAuthenticate = false,
MetadataAddress = string.Format(
_identityConfig.B2CInfo.AadInstance,
_identityConfig.B2CInfo.Tenant,
_identityConfig.B2CInfo.Policies
.Where(p => p.IsDefaultSignUpSignInPolicy == true)
.First()
.Name),
Audience = _identityConfig.B2CInfo.ClientId,
TokenValidationParameters = new TokenValidationParameters
{
ValidateLifetime = true,
RequireExpirationTime = true,
RequireSignedTokens = true,
},
Events = new JwtBearerEvents
{
OnAuthenticationFailed = B2CAuthenticationFailed
}
});
Run Code Online (Sandbox Code Playgroud)
我需要验证令牌还是中间件为我做令牌?
JWT承载中间件为您做到了(默认情况下,它将自动拒绝未签名或伪造的令牌,因此您无需显式设置RequireSignedTokens为true)。
那不是目的吗?
使用嵌入在证书中的公共非对称密钥(例如RSA或ECDSA)来验证签名与验证证书本身(尤其是其证书链)之间是有区别的。ASP.NET Core完全支持签名验证,但是尚不支持证书验证。
我不是必须要拥有B2C的签名密钥吗?
JWT承载中间件会自动从B2C的发现端点中检索它,因此无需手动进行。有关更多信息,请随时阅读OIDC发现规范:https ://openid.net/specs/openid-connect-discovery-1_0.html
| 归档时间: |
|
| 查看次数: |
786 次 |
| 最近记录: |