2016-09-05 17 views
0

IdentityServer3を使用して認証/認可サーバーを開発しています。ハイブリッド認証フローを使用したクライアント証明書

サンプルのハッシュされた秘密ではなく、X509Certificateでハイブリッドフロークライアントを検証しようとしています。

質問:認証フローの証明書を送信するようにクライアントアプリケーションを設定するにはどうすればよいですか。

クライアント証明書を取得するために、ソースコードでX509CertificateSecretParser.csを確認しましたが、owin環境変数 "ssl.ClientCertificate"に値が必要ですが、Microsoft.Owinでもこの値が設定されている場所が見つかりませんソースコード。

また、クライアントアプリケーションのSSL証明書としてサーバーに読み込んでいる証明書を使用しようとしていますが、これも機能しません。クライアントアプリケーションのセットアップ・デ・認証のための

[my client].ClientSecrets.Add(new Secret 
{ 
    Value = Convert.ToBase64String(cert.Export(X509ContentType.Cert)), 
    Type = Constants.SecretTypes.X509CertificateBase64 
}); 

コード:セットアップのための

コードは秘密クライアント

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions 
{ 
    Authority = ..., 
    Scope = ..., 
    ClientId = ..., 
    RedirectUri = ..., 
    ResponseType = "code id_token token", 
    ClientSecret = "" , //What should I do with this? 
    SignInAsAuthenticationType = "Cookies", 
    Notifications = new OpenIdConnectAuthenticationNotifications 
    { 
     RedirectToIdentityProvider = ..., 
     AuthorizationCodeReceived = ... 
    } 
}); 

答えて

0

A)あなたはIIS上でクライアント証明書を有効にする必要があります - 私たちのホストはこれを持っていますコメントアウト:

https://github.com/IdentityServer/IdentityServer3/blob/master/source/Host.Web/Web.config#L19

これは、HTTPSハンドシェイクが成功した後で、OWIN SSL環境変数を設定します。

b)OpenID Connectミドルウェアは自動的にトークンエンドポイントに接続しません。手動で行う必要があります。これにより、使用するクライアント証明書を設定できます。ここにサンプルがあります:

https://github.com/IdentityServer/IdentityServer3.Samples/blob/master/source/Clients/ClientCertificateConsoleClient/Program.cs#L26

関連する問題