我有此Windows控制檯應用程序試圖針對ADFS執行Windows身份驗證。我已經能夠使用用戶名/密碼進行身份驗證,但我不想這樣做,因爲用戶已經在Windows中進行身份驗證。在獨立應用程序上使用ADFS進行Windows身份驗證
我有這樣的代碼:
//Setup the connection to ADFS
const string adfsEndpoint = "https://iis.dev.lab/adfs/services/trust/13/windowsmixed";
var factory = new WSTrustChannelFactory(new WindowsWSTrustBinding(SecurityMode.TransportWithMessageCredential), new EndpointAddress(adfsEndpoint))
{
TrustVersion = TrustVersion.WSTrust13
};
//Setup the request object
var rst = new RequestSecurityToken
{
RequestType = RequestTypes.Issue,
KeyType = KeyTypes.Bearer,
AppliesTo = new EndpointReference(relyingPartyId)
};
//Open a connection to ADFS and get a token for the logged in user
var channel = factory.CreateChannel();
var genericToken = channel.Issue(rst) as GenericXmlSecurityToken;
,當它試圖獲得令牌。我有這樣的例外:
安全支持提供程序接口(SSPI)身份驗證失敗。 ser 版可能未運行在身份爲「host/iis.dev.lab」的帳戶中。如果se rver正在服務帳戶(例如,網絡服務)中運行,請指定 帳戶的ServicePrincipalName作爲se rver的EndpointAddress中的標識。如果服務器在用戶帳戶中運行,請將該帳戶的UserPrin cipalName指定爲該服務器的EndpointAddress中的標識。
的事情是:
- 用戶已經通過身份驗證的dev.lab域
- ADSF服務管理員用戶帳戶下運行在dev.lab域
- 在錯誤消息中我有域名iis.dev.lab由於某種原因,可能是原因..
問題:
- 我應該使用這個網址( 「../adfs/services/trust/13/ windowsmixed」)來執行這種認證的?或者我應該使用kerberosmixed?有人可以指出一些關於ADFS中可用服務目標的文檔嗎?
- 有沒有辦法在提出請求之前設置用戶的域名?我試過這個
factory.Credentials.Windows.ClientCredential.Domain = "dev.lab";
但它沒有解決。 - 即使進行auth驗證,我是否還需要定義憑據?像這樣的例子:
factory.Credentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
?
任何幫助表示讚賞。
除非您的域名已啓用Kerberos,否則您將需要使用Windows端點。 –