[英]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中間件不會自動為您聯系令牌端點。 您需要手動執行此操作。 這樣,您可以配置要使用的客戶端證書。 這是一個示例:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.