当前位置: 首页 > 知识库问答 >
问题:

IdP启动的流程-识别okta帐户

薛宜
2023-03-14

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

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

3) 从文档中,我了解到Kentor身份验证服务仅用于身份验证和授权部分,必须从应用程序本身完成。当前应用程序实现由一个自定义授权属性组成,该属性检查存储在数据库中的用户权限。应该是这样的,我们必须根据数据库权限进行授权。正当

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

共有1个答案

袁玮
2023-03-14

>

  • 不要对敏感数据使用 RelayState,除非您以加密方式对其进行签名。使用 POST 绑定时,它不受任何签名的保护,因此用户可以操作它。若要获取颁发 idp,请改为检查 AuthServices 生成的任何声明的颁发者字段。

    是的。

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

  •  类似资料:
    • 有人能告诉我如何为IDP发起的SSO连接传递RelayState吗?我们有SSO工作,但想深度链接到服务提供商应用程序中的页面。他们在RelayState上指示我们通过,但我不知道如何格式化Okta的URL。我们正在使用应用程序嵌入式链接,并希望将RelayState附加到查询字符串中。

    • 我正在尝试将 OKTA 集成为服务提供商,以便为外部客户提供对自定义应用程序的访问。 < li >外部用户登录企业Idp以访问自定义应用程序 < li >认证成功后,IDP触发IDP发起的流程,并将SAML响应提交给OKTA < li>OKTA检查SAML声明中的外部用户信息,并将这些详细信息发送到自定义API应用程序以识别用户 < li >如果找到用户,API会将所需信息返回给OKTA < li

    • 我的要求是,对于销售人员,应该允许用户在使用Okta作为身份提供者的my产品中进行SSO(单点登录)。 然而,问题在于,在这种情况下,我们希望使用salesforce作为身份提供者,使用my product作为服务提供者。 我知道我会通过联合身份通过SAML断言来做到这一点。我正在浏览各种参考资料,并努力找到实现这个案例所需遵循的确切步骤。 我可以举很多例子将Okta中的salesforce添加为

    • 我有一个带有Express服务器的Angular应用程序,Okta充当IdP。这已经设置好并且运行良好。现在,我需要从使用Amazon Cognito的外部应用程序支持SSO。他们通过为我们提供clientId和Secret来启用我们的OAuth2 Auth代码流应用程序。 我想了解的是,我应该在哪里用AccessToken交换authCode,以及我应该如何为在Okta中通过SSO来的用户管理会

    • 我已经创建了react应用程序,并使用下面提供的okta示例使用okta登录。 https://developer.okta.com/code/react/okta_react/#add-an-openid-connect-client-in-okta 我可以通过输入凭据并点击登录按钮成功地从我的应用程序登录到应用程序。 但是,如果我登录到okta开发帐户,然后如果我导航到我的应用程序,我的应用程

    • > 不是在某人试图登录时自动创建帐户,而是要求已经存在一个具有完全相同电子邮件/用户名的帐户,并在特定用户试图登录时根据电子邮件链接它们。 自动创建一个帐户第一次用户登录使用谷歌,链接他们,但需要管理员手动激活帐户之前,它可以使用 前2的组合。启用注册,允许用户注册一个帐户,并要求管理员激活帐户,在这一点上,用户可以链接他们。