OpenID Connect轻量级库

时间:2015-10-21 09:19:32

标签: c# .net single-sign-on openid openid-connect

我正在寻找将实施这些例程的OpenID Connect(OIDC)依赖方轻量级库

  1. 撰写"身份验证请求"
  2. 验证" id_token"签名     (包括从元数据端点下载证书)
  3. Parse" id_token" JWT
  4. 唯一支持的OIDC流程是所谓的" 隐式流程"服务器以" id_token"回答的位置(以及" access_token"如果请求),直接从授权端点(spec link)。

    通过NuGet存储库搜索似乎产生了唯一合适的选项--OWIN中间件,即使我可以确认它有效,但最好还是选择轻量级。

    OIDC implicit flow

1 个答案:

答案 0 :(得分:16)

分享对我有用的东西。

要实现第一个目标,可以使用名为Thinktecture.IdentityModel.Clientlink)的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.Jwtlink)Microsoft的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;

这一切都是轻量级的,可以保护您的应用程序免受不必要的依赖。

NuGets