簡體   English   中英

具有混合身份驗證流程的客戶端證書

[英]Client certificate with Hybrid Authentication Flow

我正在使用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 = ...
    }
});

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM