我们正试图在一个配置为使用wsfed验证的.net core应用程序中验证一个SAML令牌。
我们在以前的项目中也遇到过类似的问题,那是在.net框架上,我们不得不实现一个自定义认证模块,并覆盖现有的signinresponse消息,如下所示。
if (authorizationHeader.StartsWith(SAML_SCHEME))
tokenStartIndex = SAML_SCHEME.Length;
else if (authorizationHeader.StartsWith(SAML2_SCHEME))
tokenStartIndex = SAML2_SCHEME.Length;
var encodedBase64Token = authorizationHeader.Substring(tokenStartIndex);
var data = Convert.FromBase64String(encodedBase64Token);
var decodedToken = Encoding.UTF8.GetString(data);
return new SignInResponseMessage(request.Url, decodedToken);
我们有没有办法在.net core中也实现类似的东西。先谢谢了。
编辑:对于signinresponse消息。请看下面的链接,我们用它作为参考。
https:/www.codeproject.comTips842519Verify-ADFS-SAML-token-on-ASP-NET-service
什么是
SignInResponseMessage
在您的代码中?
在.net core中,ws fed认证的配置是通过以下方式实现的 中间件 而不是moudle。
而且你不需要使用自定义的方法,你只需要把这个服务注册在 配置服务 方式 startup.cs:
.AddWsFederation(options =>
{
options.Wtrealm = Configuration["wsfed:realm"];
options.MetadataAddress = Configuration["wsfed:metadata"];
})
更多细节,你可以参考 这个.