我看到FedMetadata文档可以提供注销通知和订阅端点,web.config定义了登录请求的发布者URL,但我无法找到WIF知道发送注销请求的位置.如果我使用的STS为登录和签出请求定义了不同的端点,我如何在代码中访问它或在web.config中设置它?
我正在使用ws_federation和SAML对运行在.net上的IIS服务器上运行的Identity Provider进行身份验证的项目进行工作,该项目称为thinktecture
我需要编写一个Java服务提供程序,该服务程序将SAML身份验证请求发送到身份提供程序,并在我的Java Web应用程序上获取SAML响应。
我需要知道是否有任何好的库可以验证SAML并在设置它方面有所指导,或者链接到入门指南。我已经尝试过spring_security-saml_extensions,但是当我尝试将Identitiy Providers元数据链接放到配置文件中时,却一直收到错误消息。
任何帮助将不胜感激!
另外:如果该解决方案可以集成到现有的Java Web应用程序中,那就太好了!
一些其他信息:
下面是我可以从IDP在我正在处理的SP中返回的响应中获取的XML,这给我的印象是这是一个SAML令牌。
<trust:RequestSecurityTokenResponseCollection xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">
<trust:RequestSecurityTokenResponse Context="rm=0&id=passive&ru=%2fApplicant%2fMyAccount%2fHome">
<trust:Lifetime>
<wsu:Created xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2013-04-17T19:37:18.399Z</wsu:Created>
<wsu:Expires xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2013-04-17T20:07:18.399Z</wsu:Expires>
</trust:Lifetime>
<wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsa:Address>https://[SP Server]/</wsa:Address>
</wsa:EndpointReference>
</wsp:AppliesTo>
<trust:RequestedSecurityToken>
<Assertion ID="_b4c87094-9557-419f-92fd-714a2b9cd8af" IssueInstant="2013-04-17T19:37:18.399Z" Version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
<Issuer>http://[IDP Server]/trust/idp</Issuer>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
<Reference URI="#_b4c87094-9557-419f-92fd-714a2b9cd8af">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
<DigestValue>pVpyzVN6Cz7NRNsp+jSVQP4ILt1J8y/4KBPzAtbllMg=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>NnTCfQE7p1FmrdbmYk+wRpbaZ5Rr4Opk67mI2Y6+PTdQlUErv5Bt8C/iBA398CwAgZyREqZfobd47QnxZYOvnFjiMSsQAndmPejZ9PEGwdu8hVrYyhV2VpcPtcaew/tOGWBvTdUKH5YjGmTHLtLxny0WaGYIquYVWoO3S68duy6DWXr/rxMzOEjNhY3s/3alCYMSYqDrhB8jKY8M9M2jruZa2KjIziumW6bzksizYSEFAcn4LfVhACaucrBAVch+r31vKAxO0BpkU7wSRBTaQV+/ALmA1HJAVO/mecujHJnhpizF4GDNdsnbIxck3r/2X9gt7WgMhfwBW+6Xvd2whQ==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIIC5TCCAc2gAwIBAgIQSuU/gl5tP49ARSN2SkVRKzANBgkqhkiG9w0BAQUFADAaMRgwFgYDVQQDEw9XTVN2Yy1VU0FKLURFVjEwHhcNMTAxMDAxMTI1MjUxWhcNMjAwOTI4MTI1MjUxWjAaMRgwFgYDVQQDEw9XTVN2Yy1VU0FKLURFVjEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgytRM5b2B35ydz+zxt59fklaT02z4AXUd9zm3h7Clq8LZYPMYvHOkzv7tgY38rD+NvmELAzeESBTbHN/wJyFkVbdD3mHVvE/vARGLxZB1lx+JN+gNjrrXT90FQtyWEchWoUcO6eFTAUdLgLonSn7SvI7lze2YUIS9BBc0OdpZzhDnWecUA1N0c5CeMZcjxroZYTuXH1YDGqOacphtZ7TMwCV2V5i7k9Jj4xY8uuSX92l7cW+EIqoqp26XTWmfon/jvDvWe3Dhe/mdtLXKQ2Lu8KCiN+zqA91fiGwezTkoeyDrWh/8/jqoz7Ep/4BN9cNLrbk75ngiryPlGLOCQK7vAgMBAAGjJzAlMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA4GA1UdDwQHAwUAsAAAADANBgkqhkiG9w0BAQUFAAOCAQEAVTHuMl7Tr+ZAQOLf9nPbAlFabec8DFb+3jzbo4qUfGD/DYGuDg4gFNfr09s2Ft82DzXf1BQJDprRIRtrQOE8hDpOeM6c5sOXk7xKh0QjPzqE4n7ZJUP8X+NW+Zu9D7OaFSJ0/mUffw/PugoYTusfCEudrKzo2CDgtrQjaTrm7zkxksJdH/DY+YCF1g+ljpUDKR9SYwRaGQ5fj9dn+SMibhcXqDXod+BGKW9xaTo3CLFKSbMRt97LjF+P8sfnq8IGTpHqHR3pFDjdbIQ4ixRCygEpbVZJgXPvcTk2Nnvi3SyLZPeTRTGnZM0R7KMhLji2JnHYEXArC46fVwHtjLGbGw==</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
<Subject>
<NameID>e8f279d7-cbd8-468d-a6df-97419729fe59</NameID>
<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer" />
</Subject>
<Conditions NotBefore="2013-04-17T19:37:18.399Z" NotOnOrAfter="2013-04-17T20:07:18.399Z">
<AudienceRestriction> …Run Code Online (Sandbox Code Playgroud) 一些Web应用程序身份验证协议(如WS-Federation和SAML协议,即所谓的"被动"协议,以及显然也是ASP.NET Forms身份验证,请参阅此StackOverflow问题,以及AppEngine,请参阅此GWT错误评论)丢失原始的'URL片段',即#-sign之后的部分.
会发生什么大致如下:在干净的浏览器中(所以没有缓存的信息/ cookie /登录信息)我打开URL(1)http://example.com/myapp/somepage?some=parameter#somewhere.这使浏览器请求(2)http://example.com/myapp/somepage?some=parameter,服务器将我重定向到我的身份提供者(包括身份验证请求中的URL(2)),最终我被重定向回到我来自的地方,即URL(2):这是服务器知道的唯一URL.但是我想去URL(1),并且URL片段('anchor')在此过程中已经丢失,实际上已经是第一步了.
这似乎是这些协议的基本限制,因为服务器根本不会看到URL片段.
我知道根据规范,浏览器从服务器请求(2),当我导航到(1)时,导致这个片段丢失限制SAML协议,WS-Federation等.我的问题是:怎么做我解决这个限制?
显而易见的解决方法是避免URL碎片,如本答案中所述.但是,对于我们的特定Web应用程序并不好,因为我们在单页GWT应用程序中使用可收藏的URL片段,以确保我们的应用程序中的导航不会导致页面重新加载.
我的问题:这种情况还有哪些其他解决方法或标准模式?
(我对GWT + SAML协议解决方案特别感兴趣.)
我正在研究使用Microsoft的OWIN WS-Federation包进行ADFS集成,但我发现很难从可用的文档中确定某些参数的用途.
我们有三个环境,它们都在内部托管在与我们尝试进行身份验证的ADFS系统完全不同的系统上.
根据我的研究,我对身份验证过程的工作方式有了基本的了解,但我可以对这些关键字在依赖方信任配置过程中的位置,它们的用途以及它们之间的关系进行一些说明,以便更好地沟通我们需要从ADFS系统的(第三方)所有者进行设置.
我知道wtrealm参数对应于RPT中的应用程序ID,但WS-Federation URL在哪里?这是客户端将重定向到进行身份验证的URL吗?在这种情况下,我是否需要为每个环境(开发,测试,生产)单独的RPT?多个应用ID的用例是什么?
任何关于此的光线都非常有用.
我有一个多租户应用程序,每个租户可以为WsFed或OpenIdConnect定义自己的ClientID,Authority等.所有租户都在OwinStartup注册如下:
public void Configuration(IAppBuilder app)
{
List<WsFederationAuthenticationOptions> WsFedTenantOptions = BuildWsFedTenantOptionsList();
List<OpenIdConnectAuthenticationOptions> OpenIdConnectTenantOptions = BuildOpenIdConnectTenantOptionsList();
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions() { CookieSecure = CookieSecureOption.Never });
foreach (var WsFedTenantOption in WsFedTenantOptions)
app.UseWsFederationAuthentication(WsFedTenantOption);
foreach (var OpenIdConnectTenantOption in OpenIdConnectTenantOptions)
app.UseOpenIdConnectAuthentication(OpenIdConnectTenantOption);
...
}
Run Code Online (Sandbox Code Playgroud)
它切换要使用的STS context.Authentication.Challenge(AuthenticationType).这工作得很好.
问题是,当新租户注册时,如何IAppBuilder在AuthenticationOptions没有应用程序池回收的情况下访问和添加新租户?
如果我使用一些错误或模糊的术语,我会道歉.如果我这样做,请纠正我.
我有一个相当新的ASP.NET 4.6 MVC 5应用程序,它通过WsFederation和Microsoft ADFS服务器使用声明身份验证.这意味着我不公开LogIn操作控制器,也不管理webapp中的用户和密码.当用户导航到我的站点时,如果他们未经过身份验证,则会将他们重定向到他们登录的ADFS服务器,然后重定向回来.
我需要存储一些提交的离线使用声明 - 他们的显示名称和电子邮件地址.我的想法是利用创建该集合os AspNet*表的ASP.NET Identity包.据我了解,它旨在支持本地用户(使用密码)和外部用户(使用外部密码管理)来自Facebook,Google,Github等提供商.我是否认为ADFS属于该类别?
成功验证后重定向回我的网站,我究竟在哪里放置检查用户是否在AspNet*表中输入的逻辑?cookie验证和WsFederation的配置和连线目前在该Startup.ConfigureAuth(IAppBuilder app)方法中发生.我想我应该使用从继承的类IdentityUser和IdentityDbContext<ApplicationUser>然后调用方法UserManager或UserStore.
我花了几个小时搜索如何将外部登录与应用程序"配置文件"表关联起来的示例无济于事.我很可能刚刚使用了错误的术语.到目前为止,我发现的每个示例都涉及模拟或修改登录和注册操作方法附带的默认VS模板,或者只是连接FB和Google.没有任何东西可以处理ADFS 和/或从外部源绑定到配置文件表.
任何代码示例或至少链接到文章/资源将不胜感激.
asp.net-mvc adfs claims-based-identity ws-federation asp.net-identity
我配置了一个使用AD FS的Web App,为此我使用了OWIN.
对于登录,一切都好.如果我是域名的用户并访问该网站,则会自动连接.
但我想要的是在登录后自己处理用户和角色.
所以我想用这个AD帐户检查我的数据库中是否存在用户(此过程将在另一个应用程序登录之前生成)
我想使用Microsoft的Identity来处理声明(角色和权限).但我不明白如何将我的代码用于处理来自AD FS(使用Ws-Federation)的成功连接,并添加验证并填写正确的角色.
我在ConfigureAuth中的代码:
public partial class Startup
{
private static string realm = ConfigurationManager.AppSettings["ida:Wtrealm"];
private static string adfsMetadata = ConfigurationManager.AppSettings["ida:ADFSMetadata"];
private NLogLoggingService _loggingService;
public void ConfigureAuth(IAppBuilder app)
{
_loggingService = new NLogLoggingService("Startup");
_loggingService.Debug("ConfigureAuth");
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
Wtrealm = realm,
MetadataAddress = adfsMetadata,
//CallbackPath = PathString.FromUriComponent("/Account/TestCallback"),
// https://msdn.microsoft.com/en-us/library/microsoft.owin.security.authenticationmode(v=vs.113).aspx
AuthenticationMode = AuthenticationMode.Passive,
//Notifications = new WsFederationAuthenticationNotifications
//{
//}
});
}
Run Code Online (Sandbox Code Playgroud)
在Web.config中,realm是我的Web App的链接(https://ssoadfs.test),adfsMetadata是AD FS的metadata.xml链接.
AD FS连接后设置角色和登录逻辑的方法是什么?
架构,我在想什么:
编辑:经过一些尝试,我无法处理任何成功的回调.我不想在HomeController中处理角色......
我上次的Auth配置:
_loggingService = …Run Code Online (Sandbox Code Playgroud) 我意识到.Net Core不支持WS-Federation.但是我真的想使用IdentityServer 4,我意识到它也不支持WS-Federation.
但是,如果我有一个ASP.Net核心网站并且我以完整的.Net框架为目标,那么是否可以将WS-Federation与IdentityServer 4一起使用?是否有某种界面可以使用?
就像我使用代码从IdentityServer3.WsFederation端口使用IdentityServer4有多难?
我已经阅读了一些关于WS-Fedaration的文章,但我无法理解.我有一些问题 :
我想在现实世界中以非常简单易懂的样本获得答案!我已经阅读了很多但我无法理解它
谢谢
asp.net single-sign-on sts-securitytokenservice ws-federation ws-trust
ws-federation ×10
adfs ×3
asp.net-mvc ×3
c# ×2
owin ×2
.net ×1
asp.net ×1
asp.net-core ×1
azure ×1
federation ×1
gwt ×1
gwt-places ×1
java ×1
okta ×1
saml ×1
saml-2.0 ×1
uri-fragment ×1
web-config ×1
wif ×1
ws-trust ×1