c# - 将 mvc 5 adfs 转换为 .net core adfs
问题描述
我有一个成功使用本地活动目录联合服务的现有 mvc 5 应用程序
相关的网络配置设置
<appSettings>
<add key="ida:Issuer" value="https://www.fedsvc3copa.beta.pa.gov/adfs/ls/"/>
</appSettings>
<authority name="http://www.fedsvc3copa.beta.pa.gov/adfs/services/trust">
<keys>
<add thumbprint="xxxxxxxxxxxxxxx"/>
</keys>
<validIssuers>
<add name="http://www.fedsvc3copa.beta.pa.gov/adfs/services/trust"/>
</validIssuers>
</authority>
<federationConfiguration>
<cookieHandler requireSsl="true"/>
<wsFederation passiveRedirectEnabled="true" issuer="https://www.fedsvc3copa.beta.pa.gov/adfs/ls/" realm="https://localhost:44363/" requireHttps="true"/>
</federationConfiguration>
尝试为 .net core mvc 应用程序做同样的事情。但我有点困惑在startup.cs中放什么
所以我有
.AddWsFederation(options =>
{
// MetadataAddress represents the Active Directory instance used to authenticate users.
options.MetadataAddress = "https://www.fedsvc3copa.beta.pa.gov/federationmetadata/2007-06/FederationMetadata.xml";
// Wtrealm is the app's identifier in the Active Directory instance.
// For ADFS, use the relying party's identifier, its WS-Federation Passive protocol URL:
options.Wtrealm = "https://localhost:44363/";
// For AAD, use the App ID URI from the app registration's Properties blade:
options.Wtrealm = "???????";
});
我不知道在 AAD 领域放什么,因为我没有使用 azure。我也不需要指纹和发行人吗?http://www.fedsvc3copa.beta.pa.gov/adfs/services/trust
解决方案
要回答您的第一个问题:
如果您不使用 Azure,则无需担心 AAD。实际上,您要确保.Wtrealm
没有配置两次。所以只需删除第二个。
要回答关于指纹和发行人的第二个问题:
我认为您不需要这些值,但它们可能很好地包括查看指纹和颁发者值用于验证令牌。
我试图在下面属于startup.cs
文件的代码中复制所有原始配置设置。your x.509 cert string
可以从位于 MetadataAddress url 的 xml 文件中检索该值。它将在<X509Certificate>
标签之间。
var rawCertData = Convert.FromBase64String("your x.509 cert string");
X509Certificate2 cert = new X509Certificate2(rawCertData);
SecurityKey signingKey = new X509SecurityKey(cert);
services.AddAuthentication()
.AddWsFederation(options => {
options.MetadataAddress = "https://www.fedsvc3copa.beta.pa.gov/federationmetadata/2007-06/FederationMetadata.xml";
options.Wtrealm = "https://localhost:44363/";
options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters {
ValidateIssuer = true,
ValidIssuer = "http://www.fedsvc3copa.beta.pa.gov/adfs/services/trust",
ValidateIssuerSigningKey = true,
IssuerSigningKey = signingKey
};
options.RequireHttpsMetadata = true;
}).AddCookie(cookieoption => {
cookieoption.Cookie.SecurePolicy = CookieSecurePolicy.Always;
});
注意:通过此配置,我可以访问您的 adfs 登录页面。但是,我无法登录,因为我没有权限;所以我不知道您登录后 POST 上会发生什么。如果您有问题,请随时告诉我。
推荐阅读
- git - Docker-compose 与自定义目录中托管在 git 中的图像
- json - Circe 无法将原始 json 转换为案例类错误:找不到 io.circe.generic.decoding.DerivedDecoder 类型的惰性隐式值
- java - 检查字符串是否包含@符号或字符串是否为空
- angular - 处理和测试深层或受保护的路由/功能的解决方案
- c - 如何释放更复杂的嵌套结构
- java - ArrayList[] 需要未经检查的转换以符合 ArrayList
[] - javascript - 成功 requestStorageAccess() 调用后,Firefox Storage Access API 拒绝本地存储
- excel - Excel 到 SAP 图形用户界面
- javascript - 评估错误:由 JavaScript 探针错误引起
- c# - WPF 数据绑定到对象的属性