简体   繁体   English

有关集成WSO2 API管理器,Identity Server和Shibboleth的建议

[英]Recommendation for integrating WSO2 API Manager, Identity Server and Shibboleth

What is the current, recommended way to setup a WSO2 API manager to use SSO against a Shibboleth IDP? 设置WSO2 API管理器以对Shibboleth IDP使用SSO的当前推荐方法是什么?

Our organization has an existing SSO infrastructure built around Shibboleth's IDP which we would like to integrate into our API Manager installation. 我们的组织具有围绕Shibboleth的IDP构建的现有SSO基础结构,我们希望将其集成到我们的API Manager安装中。 Ideal Use Case: 理想用例:

  • User navigates to API Manager Store. 用户导航到API Manager商店。
  • User is redirected to Shibboleth IDP Login page. 用户被重定向到Shibboleth IDP登录页面。
  • If one doesn't exist, an API Manager Account is created and assigned the Subscriber role. 如果不存在,则会创建一个API Manager帐户并分配订阅者角色。
  • User is returned to API Manager and logged in. “Signed-in-as:” renders a reasonable user name (ie not a GUID). 用户将返回到API Manager并登录。“按以下身份登录:”呈现合理的用户名(即非GUID)。

I'm aware that there is an included SAML2 authenticator component to the API Manager but it is limited in features, specifically it does not handle Encrypted Assertions, Using specific attributes for username/display name and automatic user creation. 我知道API管理器包含一个SAML2身份验证器组件,但是它在功能上受到限制,特别是它不处理加密的断言,为用户名/显示名称使用特定属性以及自动创建用户。

I understand that we could write a custom authenticator, however we would rather avoid creating another code base that needs to be maintained and doesn't have community support. 我知道我们可以编写一个自定义的身份验证器,但是我们宁愿避免创建另一个需要维护且没有社区支持的代码库。 If a simpler solution cannot be determined then this will likely be what we do. 如果无法确定更简单的解决方案,那么我们很可能会这样做。

What I am currently investigating is delegating all user management for the API Manager to a WSO2 Identity Server. 我目前正在研究的是将API Manager的所有用户管理委托给WSO2 Identity Server。 It IS would delegate authentication to Shibboleth and auto provision users before returning to the AM. 它会在返回到AM之前将身份验证委派给Shibboleth并自动设置用户。 The IS seems like it could address all of the issues mentioned above. IS似乎可以解决上述所有问题。

  1. Firstly, is this an appropriate strategy? 首先,这是否合适? If so, how is it recommended that the AM and IS be configured? 如果是,建议如何配置AM和IS?
  2. Should the IS and AM both point to the same JDBC Database or should the AM point to the IS's LDAP server? IS和AM都应该指向同一个JDBC数据库还是AM指向IS的LDAP服务器?
  3. Regarding the AM authenticator which is pointed to the IS, should I use SAML or OAuth, or is there a better/simpler one? 关于指向IS的AM身份验证器,我应该使用SAML还是OAuth,还是有更好/更简单的身份验证器?

Shibboleth IDP v2.4 – SAML2 with Attribute Push preferred. Shibboleth IDP v2.4 –具有属性推送功能的SAML2是首选。
WSO2 API Manager v1.6.0 WSO2 API管理器v1.6.0
WSO2 Identity Server v5.0.0 WSO2身份服务器v5.0.0

Here's the results of my research, for anyone interested: 这是我的研究结果,适合任何有兴趣的人:

1) This is an appropriate strategy. 1)这是一个适当的策略。 The new features in the 5.0 release of Identity Server are mainly centered around this scenario. Identity Server 5.0发行版中的新功能主要围绕此方案。 And the 1.7 release of AM also includes features to facility this setup. AM 1.7发行版还包含可用于此设置的功能。 Finally I've heard from the developers that they intend to push this integration even further in the next few releases. 最后,我从开发人员那里听说,他们打算在接下来的几个发行版中进一步推动这种集成。

2) As of AM 1.6 there was a bug which made it almost required to share the same Primary JDBC user store. 2)从AM 1.6开始,有一个错误使几乎必须共享同一主JDBC用户存储。 As of 1.7 it should be more open. 从1.7开始,它应该更开放。
There does not seem to be a preference from the people at WSO2 between LDAP and JDBC (except that the default H2 DB is not designed for production environments), however if you are choosing between installing a DB or Open LDAP for this, a LDAP server seems more suited to the choice. WSO2的工作人员似乎并不喜欢LDAP和JDBC之间的偏好(除非默认的H2 DB不是为生产环境设计的),但是,如果您要为此选择安装数据库还是Open LDAP,则使用LDAP服务器似乎更适合该选择。

3) It's best to use SAML for communicating between the two when the goal is to present the user with a UN/PW screen. 3)当目标是向用户显示UN / PW屏幕时,最好使用SAML在两者之间进行通信。 When the goal is to login with pre-issued tokens then OAuth. 当目标是使用预先发行的令牌登录时,请输入OAuth。 The API Manager and IS use both protocols behind the scenes, but the answer to this particular question seems to be SAML. API管理器和IS在幕后都使用这两种协议,但是这个特定问题的答案似乎是SAML。 In the future WSO2 plans to expand the "Trusted IDP" feature of their products, which will streamline this process (and use SAML behind the scenes). 将来,WSO2计划扩展其产品的“受信任的IDP”功能,这将简化此过程(并在后台使用SAML)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM