我一直在寻找示例或教程几个小时,以为我应该在此时发布一些内容。
我正在尝试从.Net 4.7.2 Web Api 2项目中的自定义Auth提供程序验证承载令牌。我有一个SPA应用程序,该应用程序从此身份验证提供程序获取承载令牌,并将该承载令牌发送到我的WebApi端点。我需要转身并验证每个请求中的令牌。我认为将有一种方法可以指向Microsoft.Owin.Security.Jwt命名空间中的类,以基于众所周知的discovery information url的auth提供程序来验证令牌。
有人曾经做过这件事,还是向我介绍了一个好的图书馆/文档/教程?
我知道我可以编写自己的身份验证请求过滤器,然后从身份验证服务器中取出公共证书并解析令牌并验证签名,但这对我来说写我自己vs.适当的库。
答案 0 :(得分:0)
好吧,我发现了一个很好的例子here
以下代码设置了我们的webapi,以通过我们的自定义身份验证提供程序验证令牌,同时通过OIDC发现网址发现公钥。
var issuer = "https://my-auth-provider-here/";
IConfigurationManager<OpenIdConnectConfiguration> configurationManager =
new ConfigurationManager<OpenIdConnectConfiguration>($"{issuer}.well-known/openid-configuration", new OpenIdConnectConfigurationRetriever());
OpenIdConnectConfiguration openIdConfig = configurationManager.GetConfigurationAsync(CancellationToken.None).Result;
appBuilder.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions()
{
AuthenticationMode = AuthenticationMode.Active,
TokenValidationParameters = new TokenValidationParameters()
{
AuthenticationType = "Bearer",
ValidIssuer = issuer,
ValidateAudience = false,
IssuerSigningKeys = openIdConfig.SigningKeys
}
});