OpenID Connect 轻量级库

12
我正在寻找一个OpenID Connect (OIDC) Relying Party轻量级库,它将实现以下例程:
1.组成“认证请求” 2.验证“id_token”的签名(包括从元数据端点下载证书) 3.解析“id_token”JWT
唯一支持的OIDC流程是所谓的“implicit flow”,其中服务器直接从授权端点回答“id_token”(如果请求,则还包括“access_token”)(规范链接)。
在NuGet存储库中搜索似乎只能得到适当的选项-OWIN中间件,尽管我可以确认它可以工作,但最好有轻量级的替代方案。

OIDC implicit flow

1个回答

18

我分享一下我使用过的方法。

要实现第一个目标,可以使用NuGet包Thinktecture.IdentityModel.Clientlink)(来自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的解析和验证,Microsoft的NuGet包System.IdentityModel.Tokens.Jwtlink)是一个不错的选择。以下是代码片段。
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;

这些都是轻量级的,可以使您的应用程序摆脱不必要的依赖项,保持干净。

NuGets


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接