- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
每次我尝试通过 VS2015 和 IIS Express 在我的开发盒上运行我的 MVC 项目时,我都会收到一个错误。它使用此代码对我们的 ADFS 服务器进行身份验证。
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
Wtrealm = realm,
MetadataAddress = adfsMetadata
});
这是我在浏览器中遇到的错误。
[AuthenticationException: The remote certificate is invalid accordingto the validation procedure.]
System.Net.TlsStream.EndWrite(IAsyncResult asyncResult) +231
System.Net.PooledStream.EndWrite(IAsyncResult asyncResult) +15
System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar) +119[WebException: The underlying connection was closed: Could notestablish trust relationship for the SSL/TLS secure channel.]
System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)+606 System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)+64[HttpRequestException: An error occurred while sending the request.]
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Tasktask) +92
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tasktask) +58 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()+28 Microsoft.IdentityModel.Protocols.d__0.MoveNext()+453[IOException: Unable to get document from:https://adfs.DOMAIN.com/FederationMetadata/2007-06/FederationMetadata.xml]Microsoft.IdentityModel.Protocols.d__0.MoveNext()+830 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Tasktask) +92
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tasktask) +58 System.Runtime.CompilerServices.TaskAwaiter1.GetResult() +28 Microsoft.IdentityModel.Protocols.<GetAsync>d__1.MoveNext() +606 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +92 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58 System.Runtime.CompilerServices.TaskAwaiter
1.GetResult()+28 Microsoft.IdentityModel.Protocols.d__3.MoveNext()+1332[InvalidOperationException: IDX10803: Unable to create to obtainconfiguration from:'https://adfs.DOMAIN.com/FederationMetadata/2007-06/FederationMetadata.xml'.]Microsoft.IdentityModel.Protocols.d__3.MoveNext()+2226 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Tasktask) +92
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tasktask) +58 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()+28 Microsoft.Owin.Security.WsFederation.d__c.MoveNext()+772 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Tasktask) +92
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tasktask) +58 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+26 Microsoft.Owin.Security.Infrastructure.d__b.MoveNext()+447 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Tasktask) +92
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tasktask) +58 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+26 Microsoft.Owin.Security.Infrastructure.d__8.MoveNext()+440 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Tasktask) +92
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tasktask) +58 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+26 Microsoft.Owin.Security.Infrastructure.d__5.MoveNext()+266 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Tasktask) +92
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tasktask) +58 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+26 Microsoft.Owin.Security.Infrastructure.d__0.MoveNext() +1174 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Tasktask) +92
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tasktask) +58 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+26 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.d__5.MoveNext()+287 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Tasktask) +92
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tasktask) +58 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+26 Microsoft.Owin.Security.Infrastructure.d__0.MoveNext() +937 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Tasktask) +92
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tasktask) +58 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+26 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.d__5.MoveNext()+287 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Tasktask) +92
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tasktask) +58 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+26 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.d__2.MoveNext()+272 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +26 Microsoft.Owin.Host.SystemWeb.Infrastructure.ErrorState.Rethrow() +33Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult.End(IAsyncResultar) +150
Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.EndFinalWork(IAsyncResultar) +42
System.Web.AsyncEventExecutionStep.OnAsyncEventCompletion(IAsyncResultar) +9791593
最佳答案
再次感谢 Thuan 的回答。
从答案中,我能够思考到底发生了什么(这对于弄清楚事情总是至关重要的)。关键是意识到问题源于远程证书未通过验证检查,而没有其他原因。所以我发现在 UseWsFederationAuthentication 调用中有一个 BackchannelCertificateValidator 选项,可用于验证证书是否有效。然后我找到了这个 post这帮助我想出了验证证书的代码。
该帖子从 Microsoft 站点 ( https://msdn.microsoft.com/en-us/library/office/dd633677(v=exchg.80).aspx ) 中找到了他们的代码。在文章中,它说明了有关代码的内容。
The certificate validation callback method in this example provides sufficient security for development and testing of EWS Managed API applications. However, it may not provide sufficient security for your deployed application. You should always make sure that the certificate validation callback method that you use meets the security requirements of your organization.
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
BackchannelCertificateValidator = new CertificateValidator(),
Wtrealm = realm,
MetadataAddress = adfsMetadata
});
}
public class CertificateValidator : ICertificateValidator
{
public bool Validate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
// If the certificate is a valid, signed certificate, return true.
if (sslPolicyErrors == System.Net.Security.SslPolicyErrors.None)
{
return true;
}
// If there are errors in the certificate chain, look at each error to determine the cause.
if ((sslPolicyErrors & System.Net.Security.SslPolicyErrors.RemoteCertificateChainErrors) != 0)
{
if (chain != null && chain.ChainStatus != null)
{
foreach (System.Security.Cryptography.X509Certificates.X509ChainStatus status in chain.ChainStatus)
{
if ((certificate.Subject == certificate.Issuer) &&
(status.Status == System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.UntrustedRoot))
{
// Self-signed certificates with an untrusted root are valid.
continue;
}
else
{
if (status.Status != System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.NoError)
{
// If there are any other errors in the certificate chain, the certificate is invalid,
// so the method returns false.
return false;
}
}
}
}
// When processing reaches this line, the only errors in the certificate chain are
// untrusted root errors for self-signed certificates. These certificates are valid
// for default Exchange server installations, so return true.
return true;
}
else
{
// In all other cases, return false.
return false;
}
}
}
关于asp.net-mvc - UseWsFederationAuthentication - AuthenticationException : The remote certificate is invalid according to the validation procedure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39734173/
有什么区别 git ls-remote --heads origin 和 git ls-remote . "refs/remotes/*" ? --heads origin 版本需要一段时间才能运行,
当我执行 git remote -v 时,我得到了 origin git@xxx.yyy.cc:name fetch) origin git@xxx.yyy.cc:name (push) 为什么
要构建我的远程环境,我需要设置几个环境变量(它们在 docker-compose 文件中使用)。这些是在我的 ZSH 环境中设置的,因此从终端运行 docker-compose build 可以按预期
我有一个创建多个 Docker 镜像的项目。我想在 vscode-remote 中为每个图像设置一个 devcontainer,以便我可以为每个图像启动一个容器。 我一次只需要启动并连接到一个容器/图
我设置了以下 Remote : $ git remote korg rorg 以及以下分支: $ git branch -a * (no branch) remotes/korg/gingerbr
这是我得到的错误。我有一个简单的 .Net Remoting 设置。连接空闲几分钟后出现此错误。 对象“/7966b546_734e_410d_817a_a0e701f114f6/lfxehvbczn
我有两个远程 git 分支(称它们为“RemoteA”和“RemoteB”)。 “RemoteB”在过去的某个时候从“RemoteA”中分离出来。在那之后,许多提交已应用于两个分支,但我现在希望“Re
我知道使用下面的 git 命令我可以列出我所有的“远程”分支... [someone@someone-pc somerepo]$ git ls-remote Username for 'https:/
我最需要的是一些建议。 我有以下示例: 应用程序1.exe - 有对象 MyList 应用程序2.exe - 需要访问 MyList 并与对象交互,就好像它是从 Application2 创建的一样。
我有一个大型应用程序,它通过 .net 远程处理使用 COM 从 Web 层调用到中间层。在此模式下启动和运行非常慢。 COM 边界的两边都是我们的代码。 我希望能够(可选)在单个进程中运行它。相当多
假设我有两个 Remote :origin 和 upstream。有没有一种方法可以将对象 upstream 推送到 origin,以便其他从 origin 克隆我的 repo 的人能够运行像 git
简而言之; 如何删除远程多个 merge 的 Remote ? 更多背景; 我有一个 git 存储库,其中包含数十个已 merge 到 master 中的 Remote 。我可以使用以下方法一次删除这
我有一个仓库的本地 git clone。我当然可以使用 git remote 查看我的本地远程 origin。但是,我可以看到我的 Remote origin 的 Remote 吗?我可以查看有关这些
先决条件 - 远程服务器和客户端均已设置,客户端能够通过客户端激活的业务对象在服务器端调用方法并从服务器端接收事件。 在保持服务器和客户端运行的情况下更改远程服务器的IP地址,客户端仍然可以执行上述任
我正在设置一个新的远程主机,每次启动它时,我都会收到以下错误输出:有关如何解决此问题的任何反馈或指示? Pseudo-terminal will not be allocated because st
我只是不明白 Git 的帮助页面。那么会发生什么或有什么区别? 假设我有一个带有子模块 B 的 Git 项目 A。子模块 B 确实有一个子模块 C。克隆存储库后,A 指向 B 的特定提交。B 指向 C
我在 Java 中使用 rmi。但是有一个 ExportException“远程对象实现非法远程接口(interface)”。 这是我的代码,有人可以帮帮我吗? public interface Re
我对 git 越来越熟悉了,但是我遇到了一些让我困惑的事情。我们在这里使用本地镜像,因为我们的线路很慢。为了指向镜子,我在 .gitconfig 中有一些常用的东西。 当我想推送时,问题就来了。看来我
我设置了一个带有 conan“远程”存储库的 jfrog artifactory 来代理官方 conan-center 存储库。我看到三个不同的 conan-center URL,具体取决于我阅读的来
我无法使用 VSCode 远程 SSH 在我的远程服务器上保存任何文件,因为我不是 root 用户。 我关注了 official documentation关于如何使用 SSH 配置文件设置 ssh
我是一名优秀的程序员,十分优秀!