我正在寻找将实现这些例程的OpenID Connect(OIDC)依赖方轻量级库。
要支持的唯一OIDC流是所谓的“隐式流”,其中服务器从授权端点(spec link)回答“id_token”(以及“access_token”,如果请求)。
搜索NuGet存储库似乎只能产生唯一合适的选项--OWIN中间件,即使我能确认它有效,但最好还是选择轻量级的替代品。
只是分享对我有用的东西。
为了实现第一个目标,可以使用名为Thinktecture.IdentityModel.Client
(link)的NuGet包(来自IdentityServer创建者的包本身就是令人难以置信的)。显示基本用法的示例如下。
var client = new OAuth2Client(new Uri(AuthorizeEndpointUrl));
string url = client.CreateAuthorizeUrl(
clientId: ClientId,
redirectUri: RedirectUri,
responseType: "id_token",
responseMode: "form_post",
nonce: Guid.NewGuid().ToString(),
additionalValues: additionalValues);
至于从OIDC身份提供商处收到的JWT的解析和验证,System.IdentityModel.Tokens.Jwt
(link)微软的NuGet包是一种方法。代码片段也是如此。
var parameters = new TokenValidationParameters()
{
IssuerSigningTokens = GetSigningTokens(MetadataEndpointUrl),
ValidAudience = ValidAudience,
ValidIssuer = ValidIssuer,
};
var tokenHandler = new JwtSecurityTokenHandler();
SecurityToken validated;
tokenHandler.ValidateToken(jwt, parameters, out validated);
return validated as JwtSecurityToken;
这一切都是轻量级的,可以保护您的应用程