对ADFS进行身份验证并检查我希望从adfs服务器获取安全令牌的声明。但是,我正在使用的示例代码在请求令牌时始终会生成错误。示例代码如下:
<input type = "checkbox"
class = "input-md"
id = "soloIdaId"
name = "soloIda"
value = "true"
checked = "checked"
/>
<input type = "hidden"
id = "__checkbox_soloIdaId"
value = "true"
name = "__checkbox_soloIda"
/>
我收到以下错误:
未处理的类型&#39; System.ServiceModel.FaultException&#39;发生在System.ServiceModel.dll中 其他信息:ID3082:请求范围无效或不受支持。
ADFS服务器中是否缺少不允许提供令牌的配置?使用IdpInitiated Logon的另一段代码可用于生成SAML令牌。 ADFS属性如下 -
private static SecurityToken RequestSamlToken()
{
var factory = new WSTrustChannelFactory(
new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential),
new EndpointAddress(adfsEndpoint));
factory.TrustVersion = TrustVersion.WSTrust13;
factory.Credentials.UserName.UserName = username;
factory.Credentials.UserName.Password = password;
var rst = new RequestSecurityToken
{
RequestType = RequestTypes.Issue,
KeyType = KeyTypes.Bearer,
AppliesTo = new EndpointReference(realm)
};
return factory.CreateChannel().Issue(rst);
}
答案 0 :(得分:0)
您似乎没有在ADFS中为rts.AppliesTo
属性中传递的网址(代码中的realm
变量)创建信赖方
从ADFS收到的令牌不是通用的,它们仅适用于访问您在请求的该属性中传递的特定服务器。即使对于相同的用户身份,如果您需要访问另一台服务器,您也需要从ADFS获取另一个令牌。
此外,您将无法检查请求令牌的应用程序中的声明。您需要将令牌传递给服务器并让服务器向您显示声明。