我尝试使用由ADFS外部公司发布的idsrv3接收令牌,因此idsrv3作为服务提供商,ADFS作为身份提供者。我使用Ws-Fed(pasive)协议,因此公司已经添加了我们的端点以及应该使用令牌发出的声明。
我通过URL https://adfsapp.companydomain.com/adfs/ls/idpinitiatedsignon.aspx发出了登录请求,并在引入凭据后对用户进行身份验证,并使用SAMLResponse重定向到idsrv3端点。
根据idsrv3文档,我在应用程序中配置了身份提供程序。 (https://identityserver.github.io/Documentation/docsv2/configuration/identityProviders.html)
private static void AddExternalProvider(IAppBuilder app, string signInAsType, AdfsWsFederationExternalProvider provider)
{
var metadataAddress = ""https://adfs.leastprivilege.vm/federationmetadata/2007-06/federationmetadata.xml";
var manager =
new SyncConfigurationManager(new ConfigurationManager<WsFederationConfiguration>(metadataAddress));
var providerId = provider.ExternalProviderId;
var options = new WsFederationAuthenticationOptions
{
AuthenticationType = providerId,
Caption = provider.ExternalProviderName,
SignInAsAuthenticationType = signInAsType,
CallbackPath = new PathString("/" + providerId),
ConfigurationManager = manager,
Wtrealm = provider.Wtrealm,
};
app.UseWsFederationAuthentication(options);
}
但令牌未经过验证,所以我有以下问题:
1-我应该声明一个令牌处理程序来处理公司STS发布的令牌吗?
2-回调路径&#34; / providerId&#34;会自动处理令牌吗?
3-如何知道端点(&#34; / providerId&#34;)是否在等待传入的令牌?
感谢您的帮助。
答案 0 :(得分:0)
您正在使用WS-Federation作为协议,但正在尝试IDPInitiated,它仅适用于SAML-P协议。
idsrv3默认不处理SAML协议。
当您从应用程序启动然后最终使用ADFS时会发生什么?