建议WSO2 API管理器针对Shibboleth IDP使用SSO的当前推荐方法是什么?
我们的组织有一个围绕Shibboleth IDP构建的现有SSO基础架构,我们希望将其集成到我们的API Manager安装中.理想用例:
我知道API Manager中有一个包含的SAML2身份验证器组件,但功能有限,特别是它不处理加密断言,使用用户名/显示名称的特定属性和自动用户创建.
我知道我们可以编写一个自定义身份验证器,但我们宁愿避免创建另一个需要维护的代码库,也没有社区支持.如果无法确定更简单的解决方案,那么这可能就是我们所做的.
我目前正在研究的是将API Manager的所有用户管理委派给WSO2 Identity Server.在返回AM之前,它会将身份验证委派给Shibboleth和自动配置用户.IS似乎可以解决上面提到的所有问题.
Shibboleth IDP v2.4 - 具有属性推送的SAML2首选.
WSO2 API Manager v1.6.0
WSO2 Identity Server v5.0.0
我们正在考虑将我们在WSO2中的角色存储在内部数据库中 - 暂时.
据我了解,这些内部角色存储在表UM_HYBRID_ROLE中.我要确认的是,这些角色的处理方式与在外部LDAP中配置的角色的处理方式相同,涉及XACML策略,声明mgt等.
换句话说,我们是否可以假设与内部角色相关的政策/主张与外部角色相关时的行为相同?
WSO2如何处理内部/外部角色(除了它们持续存在的地方)之间是否存在任何差异,我应该注意哪些?
谢谢,迈克
在以前的一些WSO2IS版本中,有一个默认的自我注册功能.但是,我在5.0版本中找不到它.
阅读WSO2IS 5.0文档,我发现有两个API用于此功能:
getUserIdentitySupportedClaims() - 应将用户配置文件详细信息保存到Identity Server中的一组声明.
registerUser() - 注册系统中的用户.您需要传递用户名,密码,声明属性和从上一个呼叫和租户域返回的值等值.确认代码通过电子邮件发送到指定的电子邮件地址.
那么,自我注册功能隐藏在某个地方还是我需要自己实现呢?有没有使用API来实现此功能的示例?
谢谢.
我无法理解服务提供者的入站身份验证配置和身份提供者的联合身份验证器配置之间的区别.
在此过程中,我没有配置身份提供程序,但身份验证工作正常.但我在身份提供商的联合身份验证器配置(SAML)中发现了一些类似的配置.我无法理解为什么需要联合身份验证器配置.
我理解如下.
当用户信息(id,密码等)存储在IS服务器中并且认证过程在IS服务器中处理时,SP(服务提供商)的入站认证配置就足够了.不需要配置IDP(身份提供者).这样对吗?
当用户信息(id,密码等)存储在另一个IS服务器或其他公司的服务器(google,facebook)中,并且身份验证过程正在另一个IS服务器或其他公司的服务器(google,facebook)中处理时,IDP的联合身份验证器配置(身份提供者)就够了.不需要配置SP(服务提供商).这样对吗?
在这种情况下,不需要配置身份提供程序.仅使用入站身份验证配置(SAML)时,它会在此实例中处理请求.在配置联合身份验证器配置(SAML)时,它会将请求转发给其他实例.这样对吗?
我想知道我的想法是对的.
请给我一些关于以下案例的例子.
我尝试使用wso2的身份服务器创建单点登录(SSO).我遵循这个教程:https://docs.wso2.com/display/IS500/Enabling+SSO+for+WSO2+Servers在我的情况下,我希望在DAS中使用Identity Server(IS)登录.我安装了DAS和IS,IS端口9443使用https,DAS端口9445使用https.当我尝试登录DAS时系统将我重定向到IS登录表单,这是正确的,但是当我写用户和密码时,系统会发出此错误(查看图像)
这是wso2is中的日志错误(使用IS:5.1.0,DAS:3.0.0):
[2016-01-05 08:58:18,866] ERROR {org.wso2.carbon.identity.sso.saml.processors.SPInitSSOAuthnRequestProcessor} - Error processing the authentication request
org.wso2.carbon.identity.base.IdentityException: Error while signing the SAML Response message.
at org.wso2.carbon.identity.base.IdentityException.error(IdentityException.java:162)
at org.wso2.carbon.identity.sso.saml.util.SAMLSSOUtil.setEncryptedAssertion(SAMLSSOUtil.java:676)
at org.wso2.carbon.identity.sso.saml.builders.DefaultResponseBuilder.buildResponse(DefaultResponseBuilder.java:75)
at org.wso2.carbon.identity.sso.saml.processors.SPInitSSOAuthnRequestProcessor.process(SPInitSSOAuthnRequestProcessor.java:159)
at org.wso2.carbon.identity.sso.saml.SAMLSSOService.authenticate(SAMLSSOService.java:164)
at org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet.handleAuthenticationReponseFromFramework(SAMLSSOProviderServlet.java:691)
at org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet.handleRequest(SAMLSSOProviderServlet.java:178)
at org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet.doGet(SAMLSSOProviderServlet.java:95)
at org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet.sendRequestToFramework(SAMLSSOProviderServlet.java:1025)
at org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet.sendToFrameworkForAuthentication(SAMLSSOProviderServlet.java:457)
at org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet.handleSPInitSSO(SAMLSSOProviderServlet.java:360)
at org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet.handleRequest(SAMLSSOProviderServlet.java:195)
at org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet.doPost(SAMLSSOProviderServlet.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.eclipse.equinox.http.helper.ContextPathServletAdaptor.service(ContextPathServletAdaptor.java:37)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:60)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.wso2.carbon.ui.filters.CSRFPreventionFilter.doFilter(CSRFPreventionFilter.java:88)
at …
Run Code Online (Sandbox Code Playgroud) 我已安装WSO2 IS 5.2.0,我有问题检索自定义创建的声明.
我已经为方言http://wso2.org/claims添加了新的声明,我还添加了新的声明,将相同的属性映射到与5.1.0版一起使用的方言http://wso2.org/oidc/claim但是在版本5.2.0无法正常工作.
所有字段都存在于数据库属性表中.我正在使用Oauth2 OpenID连接userInfo来获取用户数据.
通过5.1.0中的这个配置,我从图像中获得了所有请求的声明,但是在5.2.0中,我只获得了非自定义的声明 - 默认情况下已经存在于两种方言中.
我在wso2身份服务器中设置了SP,并且能够使用playground在auth2中获取access_token.参考:https://docs.wso2.com/display/IS510/OAuth+2.0+with+WSO2+Playground
然后我访问了userinfo端点,如:
curl -k -H "Authorization: Bearer 603b0a91-0354-3b64-90e9-0eb1fdd8f162" https://localhost:9443/oauth2/userinfo?schema=openid
Run Code Online (Sandbox Code Playgroud)
我总是得到JSON:
{"sub":"admin@carbon.super"}
Run Code Online (Sandbox Code Playgroud)
但是默认情况下还应该有其他属性,如名字,姓氏,电子邮件等.如何配置服务器以返回所有这些信息?
PS尝试了IS 5.1和5.2
我正在使用WSO2 API Mananger管理我的API。到目前为止,每个API都是私有的,可以使用访问令牌进行访问。新的用例是一些纯粹公开的API。任何人都可以匿名访问它们。没有任何令牌/访问详细信息的GET,POST,PUT都应该起作用。
我通过WSO2 API管理器公开了API,没有任何作用域。试图在没有任何令牌的情况下访问它们;但是它不起作用。它说未找到必需的oAuth credentails。还有其他方法可以公开API,以便匿名访问它们吗?
我们正在使用WSO2进行身份验证(SAML / SSO)。
我不知道如何判断用户是否已经登录(以防止并发登录)。其他SO问题表明,无论是否使用WSO2 IS Analytics都可以知道这一点。我不希望也不必运行WSO2 IS Analytics(这在这里已提及,但从未明确。此外,我可以看到在登录期间填充并引用了IDN_AUTH_SESSION_STORE表,但这使用的是SESSION_ID(由commonAuth cookie)。
因此,我正在寻找这个问题的直接答案:在Auth流程中,我们如何确定给定的用户是否已经登录?
我们需要支持外部和内部用户,但必须将它们保存在不同的LDAP服务器中.WSO2 Identity Server是否能够同时支持两个LDAP服务器,这是否与多租户有关?我需要在相关的LDAP服务器中注册新用户(内部和外部),对用户进行身份验证并通过API提取用户声明.