我從ADFS獲得JSON Web令牌併成功調用Web API函數。有效。但是,我無法將代碼轉換爲Windows 10 Native或通用應用程序。使用JWT的ADFS和本地應用程序身份驗證
任何人都知道該怎麼辦呢?我的下面的代碼在控制檯應用程序中完美工作
我沒有任何想法如何納入本機應用程序WSTrustChannelFactory
。另外,下面的(GenericXmlSecurityToken).TokenXml也有問題。
var token = GenericXmlSecurityToken GetJWT();
client2.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.TokenXml.OuterXml);
或者更適合移動應用的想法?
謝謝
private static GenericXmlSecurityToken GetJWT()
{
//string endpointUri = string.Format("https://{0}/adfs/services/trust/13/usernamemixed", _serverName);
string endpointUri = string.Format("https://{0}/adfs/services/trust/2005/usernamemixed", _serverName);
var factory = new WSTrustChannelFactory(
new UserNameWSTrustBinding(),
new EndpointAddress(endpointUri));
//factory.TrustVersion = TrustVersion.WSTrust13;
factory.TrustVersion = TrustVersion.WSTrustFeb2005;
if (factory.Credentials != null)
{
factory.Credentials.UserName.UserName = _userName;
factory.Credentials.UserName.Password = _password;
}
var rst = new RequestSecurityToken
{
RequestType = RequestTypes.Issue,
KeyType = KeyTypes.Bearer,
AppliesTo = new EndpointReference(_relyingPartyUri),
KeySizeInBits = 0,
TokenType = "urn:ietf:params:oauth:token-type:jwt",
};
var channel = factory.CreateChannel();
try
{
var token = channel.Issue(rst);
return token as GenericXmlSecurityToken;
}
catch (ProtocolException ex)
{
Debug.Write(ex.Message);
}
return null;
}