2015-10-21 11 views
8

私はOpenID Connect(OIDC)依拠当事者軽量ライブラリを探していますが、これらのルーチンが実装されています。OpenID Connect軽量ライブラリ

(メタデータエンドポイントからの証明書をダウンロードするなど)署名 "id_token"
  1. 作曲 "認証要求"
  2. 検証
  3. 解析 "id_token" JWT

サポートするのみOIDCフローでありますいわゆる「暗黙のフロー」サーバーは、認証エンドポイント(spec link)から「id_token」(要求されている場合は「access_token」)で応答します。

NuGetリポジトリを検索することで、OWINミドルウェアが唯一の適切なオプションとなるようですが、動作確認できても、軽量の代替方法を使用する方がよいでしょう。ちょうど私のために働いていたものを共有して

OIDC implicit flow

答えて

11

第1目標を達成するには、Thinktecture.IdentityModel.Clientlink)と呼ばれるNuGetパッケージを使用できます(それ自体信じられないIdentityServerクリエータからのパッケージ)。基本的な使用法を示す例は以下のとおりです。 JWTの解析と検証については

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 IDプロバイダから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; 

これはすべて軽量であり、不要な依存関係からアプリケーションをきれいに保ちます。

NuGets