2015-10-21 2 views
8

Я ищу OpenID Connect (OIDC) Relying Party легкая библиотека, в которой будут реализованы эти подпрограммы.Легкая библиотека OpenID Connect

  1. Compose "запрос аутентификации"
  2. Validate "id_token" подпись (включая загрузку сертификата с конечной точки метаданных)
  3. грамматического разбора "id_token" JWT

Единственным РСИНОМ потоком должен поддерживаться в так называемый «неявный поток», где сервер отвечает с «id_token» (и «access_token» по запросу) прямо с конечной точки авторизации (spec link).

Поиск в репозитории NuGet, по-видимому, дает единственный подходящий вариант - промежуточное ПО OWIN, и хотя я могу подтвердить, что он работает, было бы лучше иметь легкую альтернативу.

OIDC implicit flow

ответ

11

Просто делясь работал для меня.

Для получения 1-го шага можно использовать пакет NuGet под названием Thinktecture.IdentityModel.Client (link) (пакет от создателей 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); 

Как разборе и валидации JWT, полученный от РСИН идентичности Исполнитель System.IdentityModel.Tokens.Jwt (link) пакет NuGet Microsoft является путем. Также показан фрагмент кода.

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