IdP启动流程 - 识别okta帐户

时间:2017-05-18 12:50:36

标签: okta kentor-authservices

我有一个MVC应用程序(.Net Framework 4.5),它在过去三年里一直存在并使用表单身份验证机制。此应用程序提供不同的帐户,如个人,免费赠品,企业等。对于企业帐户,我们处理同一应用程序中的所有内容。即假设一个名为“xyz”的企业用该应用程序创建了一个企业帐户,然后我们提供了一个自定义URL,如“https://application/xyz/login”,并从我们识别该企业的URL中提取。我不知道他们实现这样的原因的确切原因,因为我已经看到将具有企业帐户的应用程序创建为子域(例如https://xyz.okta.com)。现在,客户要求将Okta集成到此应用程序中。 所以我查看了Okta,发现SAML是正确的方法,最终在KentorIT Authservices中完成。最初,我能够将其与示例MVC应用程序集成,并且身份验证部分工作正常。有了一些关于SSO的基本概念,我已经开始将kentor authsevices集成到我的应用程序中。我在这个实现中遇到的挑战是:

1)对于Enterprise帐户,每个企业的Okta配置设置都不同,并且对于我当前的应用程序实现,无法从web.config中进行设置。所以我试图通过代码设置它,我能够通过替换Configuration.Options.FromConfiguration;.来集成这些设置我计划存储所有配置相关的东西(单点登录URL,受众URI,身份提供商发行者等)等。 )在数据库中,以便我可以随时获取信息,并假设“身份提供商颁发者ID对于每个Okta帐户都是唯一的。在IdP启动的流程中,当用户尝试访问应用程序时,它将重定向到AuthServices \ Acs的操作方法,从那时起,我正在尝试阅读配置设置。从请求中我可以通过哪种方式识别来自哪个Okta帐户来电(如Identity Provider Issuer)?目前,我设置了“ Identity Provider Issuer “值(我认为哪个应该是okta帐户唯一的)到General SAML设置选项卡下的Default RelayState字段,我能够从AuthServices \ Acs操作方法中检索它。它似乎是是个好主意?请指教。

2)企业帐户受限于许可证数量(例如50)。假设企业Okta管理员有意添加了55个用户,则所有这些用户都可以根据默认设置成功验证应用程序。有什么方法可以处理这种情况。我是否需要记录特定企业帐户下的用户列表?

3)从我理解的文件中,Kentor认证服务仅用于认证,授权部分必须从应用程序本身完成。当前的应用程序实现包含一个自定义授权属性,用于检查存储在数据库中的用户权限。应该存在,我们必须根据数据库权限进行授权。正确?

期待您宝贵的建议,如果我错了,请纠正我。提前谢谢。

1 个答案:

答案 0 :(得分:4)

  1. 除非您对其进行加密签名,否则不要将RelayState用于敏感数据。使用POST绑定时,它不受任何签名保护,因此用户可以对其进行操作。要获取颁发的idp,请检查AuthServices生成的任何声明的issuer字段。

  2. 是的,这就是Kentor.AuthServies的全部想法:将SAML2身份验证插入.NET的安全模型,以允许您使用任何当前/传统的授权设置。