当前的 Microsoft ADFS 2.0 服务器(或新的 ADFS 3.0 RTM)是否支持 SCIM 配置协议?如果没有,SPML 可能计划了哪一种配置协议?
我们正在尝试建立我们的开发环境,但当 WAP 与 ADFS 一起使用时,我们遇到了问题。以下是我们目前所掌握的内容。
我们的 ADFS 服务器与 Active Directory 绑定,并且与我们拥有的声明感知依赖方之一正常工作。
但是,当我们为此 ADFS 服务器安装 Web 应用程序代理并在 WAP 中发布此声明感知 RP 时,ADFS 挑战不再有效。下面是流程
当我访问 ADFS 3.0 事件查看器时,我看到两个错误,事件 ID 分别为 511、364。
有几件事需要注意 - 我正在使用由我们的内部 CA 为 ADFS 服务器颁发的证书。WAP 中发布的应用程序使用我们内部 CA 颁发的证书。即使这是一个开发者,此已发布应用程序的此证书是否必须由公共 CA 颁发。环境设置 ?
事件 ID 511 错误 -
由于联合身份验证服务配置无效,不允许传入的登录请求。
请求 url: /adfs/ls?version=1.0&action=signin&realm=urn'%'3AAppProxy'%'3Acom&appRealm= 故意屏蔽它&returnUrl=故意屏蔽它&client-request-id= 故意屏蔽它
用户操作:检查联合身份验证服务配置并执行以下操作: 验证登录请求是否具有所有必需的参数并且格式正确。验证 Web 应用程序代理依赖方信任是否存在、已启用并且具有与登录请求参数匹配的标识符。验证目标依赖方信任对象是否存在,是否通过 Web 应用程序代理发布,并且具有与登录请求参数匹配的标识符。
事件 ID 364 错误 -
在联合被动请求期间遇到错误。
附加数据
协议名称:
依赖方:
异常详细信息:Microsoft.IdentityServer.Web.InvalidRequestException:MSIS7009:请求格式错误或无效。请联系您的管理员了解详细信息。在 Microsoft.IdentityServer.Web.Protocols.MSISHttp.MSISHttpProtocolHandler.ValidateSignInContext(MSISHttpSignInRequestContext msisContext,WrappedHttpListenerRequest 请求) 在 Microsoft.IdentityServer.Web.Protocols.MSISHttp.MSISHttpProtocolHandler.CreateProtocolContext(WrappedHttpListenerRequest 请求) 在 …
我正在尝试在 Visual Studio 2013 的新 MVC 5 项目中设置集成的 OWIN WS-Federation (ADFS) 身份验证。 Startup.Auth 中的 WsFederation 配置如下:
app.UseWsFederationAuthentication(wtrealm: "MyRealm",
metadataAddress: "https://myADFSInstanceHost/FederationMetadata/2007-06/FederationMetadata.xml");
Run Code Online (Sandbox Code Playgroud)
登录页面上的联合按钮工作正常。ADFS登录页面是可以实现的,我可以在那里登录。所需的 cookie 似乎已正确设置。至少有传递 .AspNet.ExternalCookie cookie。但是当执行对 mvc 应用程序的回调时,在 ExternalLoginCallback 控制器中 AuthenticationManager.GetExternalLoginInfoAsync() 总是返回 null。
我试图了解使用 WCF、Claims 和 ADFS 3.0 开发框架需要什么。内部用户将根据 Active Directory 进行身份验证,外部用户将根据 SQL Server 表进行身份验证,并且授权存储在实现组和权限的数据库表中。我正在使用 WCF 而不是 Web Api 或 OWIN 创建 API。
我对使用 Identity Server 或 3rd 方产品不感兴趣,我只想知道如何创建自定义安全令牌服务以从我的成员资格表中读取并通过我的组和权限表设置声明。
我找不到任何有关此的信息。Visual Studio 2015 中没有身份和访问控制,似乎没有使用 WCF,只使用 Web Api、OWIN 和 MVC?
我已经成功地创建了一个包含服务器应用程序和 Web API 的新应用程序组,并且 OpenID Connect 协议正在运行,没有任何问题,直到我尝试调用 UserInfo。依赖方标识符与服务器应用程序的客户端 ID 具有相同的 GUID(根据我在线阅读的示例)。尝试调用 UserInfo 时出现以下错误:
WWW-Authenticate: Bearer error="invalid_token", error_description="MSIS9921: Received invalid UserInfo request. Audience 'microsoft:identityserver:21660d0d-93e8-45db-b770-45db974d432d' in the access token is not same as the identifier of the UserInfo relying party trust 'urn:microsoft:userinfo'."
任何帮助将不胜感激。
我试图将我的 Identityserver4 配置为使用 ADFS 4.0 作为外部提供程序。我已将其配置如下:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme
});
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
ClientId = "60b3d106-d155-4f9f-ba75-84b8078829fa",
AuthenticationScheme = "oidc",
PostLogoutRedirectUri = "http://localhost:5000",
DisplayName = "ADFS TEST Domain",
MetadataAddress = "https://srv2016dc01.test.local/adfs/.well-known/openid-configuration",
SaveTokens = true,
GetClaimsFromUserInfoEndpoint = true
});
Run Code Online (Sandbox Code Playgroud)
似乎有效,因为我可以登录并获得一些声明: 声明从 ADFS 返回
但看起来 Userinfo Endpoint 不会被调用......否则应该有更多声明,而且我在 ADFS 服务器的调试日志中看不到对 Userinfo 端点的调用。
我还尝试在代码中调用 Userinfo 端点,如此链接中所示: ASP.NET Identity (with IdentityServer4) get external resource oauth access token
但是在“await _signInManager.UpdateExternalAuthenticationTokensAsync(info);” 我没有取回 access_token,只有一个 id_token...
是否有人在使用 ADFS 4.0 或至少使用任何其他外部 OpenIdConnect 服务器的 Identityserver4 上有工作示例?
有没有其他方法可以从 Userinfo …
我们正在使用使用 Azure Active Directory 身份验证的 Xamarin.Forms 开发跨平台移动应用程序。对于这种情况,我们使用Microsoft.IdentityModel.Clients.ActiveDirectory nuget。它适用于除此以外的任何情况:
UWP 用户在连接到托管 ADFS 的网络时尝试使用公司帐户登录 - 键入user@domain 后,adal 页面尝试重定向到组织登录页面并失败并显示消息 -我们无法连接到您的服务现在需要。检查您的网络连接或稍后再试。
当我们从 Visual Studio 运行应用程序时,问题不会出现。它仅在通过 .appx 安装应用程序时出现。
当用户连接到其他网络时,问题不会出现 - 我尝试在连接到我的 Android 手机上设置的热点时登录,我成功登录。
当用户连接到公司网络,但使用不在我们 ADFS 中的帐户登录时,问题不会出现。
我们用来登录的方法:
AuthenticationContext.AcquireTokenAsync(resource, clientId, RedirectUri, platformParameters)
我们将platformParameters 的参数useCorporateNetwork设置为 true,在项目属性 -> 包清单 -> 功能中,我们设置诸如专用网络(客户端和服务器)之类的标志
当尝试在不设置 RedirectUri 的情况下登录时,将出现公司登录页面,您将能够输入密码/登录名并对其进行验证,但这对我们来说没有用,因为我们需要将登录名重定向到我们的 API - 当像这样登录,您将遇到错误,指出指定的 redirectUri 不是为使用的 clientId 配置的。
我一直在尝试不同的方法,比如使用本机 WebAuthenticationCoreManager,但它不支持 RedirectUri(如果它支持并且可以工作,请写下如何操作!),为我们的应用程序和 AuthHost.exe 设置 Loopback Exempts(没有改变)。
我很高兴使用任何可行的方法,它可以是原生 UWP 方法,因为我们可以使用平台依赖项。
编辑
当我尝试通过 VPN 连接时,在登录时我收到消息 -我们现在无法连接到您需要的服务。检查您的网络连接或稍后再试。- 即使我从 Visual …
我们有一个使用REST API的Web 应用程序。REST API 基于 Loopback 并使用其内置的基于令牌的身份验证。对于 Web 应用程序,我们使用基于表单的 HTTPS 身份验证,因此用户必须输入他的用户名和密码,然后我们使用这些用户名和密码通过端点从 REST API 获取访问令牌。POST /users/login
我们的一位客户要求我们通过SAML 2.0和AD FS支持单点登录 (SSO)身份验证。
我们将 Web 应用程序配置为服务提供商(AD FS 中的依赖方)并设法为其支持 SSO。变化的部分是 Web App 和 REST API 之间的身份验证。现在的想法是将 Web App 和 REST API 配置为相同的依赖方,POST /users/saml-login并向 REST API添加新端点,以便 Web App 可以向该端点发送 SAML 响应并根据声明获取访问令牌在 SAML 响应中指定。其他一切都应该像以前一样工作。这是我想象的流程:
POST /users/saml-login验证它的 REST …我正在尝试在 Saml2 的 Asp net Core 应用程序中进行一个简单的实现,以与 Ad FS 服务器集成。我不明白为什么我会收到这个错误。我从 gitHub 下载了示例并尝试在我的应用程序中调整它。
NotImplementedException: The method or operation is not implemented.
Sustainsys.Saml2.AspNetCore2.Saml2Handler.AuthenticateAsync()
Run Code Online (Sandbox Code Playgroud)
这是我的实现,我的应用程序在 Asp Net Core 上运行
启动时
services
.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = Saml2Defaults.Scheme;
})
.AddSaml2(options =>
{
options.SPOptions.EntityId = new EntityId("http://myAdfsServer.myDomain.com/adfs/services/trust");
options.SPOptions.ReturnUrl = new Uri("https://localhost:5000");
options.IdentityProviders.Add(
new IdentityProvider(new EntityId("http://myAdfsServer.myDomain.com/adfs/services/trust"), options.SPOptions)
{
LoadMetadata = true,
MetadataLocation = "https://myAdfsServer.myDomain.com/FederationMetadata/2007-06/FederationMetadata.xml"
//MetadataLocation = "FederationMetadata.xml"
});
//options.SPOptions.ServiceCertificates.Add(new X509Certificate2(certificate.ToString()));
})
.AddCookie();
Run Code Online (Sandbox Code Playgroud)
在我的控制器上 尝试类似于Sustainsys SAML2 Sample for ASP.NET Core WebAPI without Identity …
我正在为我的应用程序实施 SSO(单点登录和单点注销)。假设我有
https://app1.test.comWtrealm相同https://app1.test.comhttps://app2.test.comWtrealm相同https://app2.test.com我已使用此博客作为在两个应用程序中实现单点登录的参考。 https://blogs.msdn.microsoft.com/sakamati/2015/07/06/creating-owin-based-ws-federation-application/
我面临的问题是单点注销。当我在一个应用程序中注销时,另一个应用程序中的会话仍然处于活动状态。
我缺少什么才能使单点注销适用于两个应用程序?