【问题标题】:How to get SAML token from OKTA from .NET web service code without using browser?如何在不使用浏览器的情况下从 .NET Web 服务代码从 OKTA 获取 SAML 令牌?
【发布时间】:2016-02-05 21:35:36
【问题描述】:

我们有由 Kendo UI 和后端 .NET Web 服务构建的混合移动应用程序。来自 UI 的所有调用都是通过 ajax 进行的。现在我们需要将应用程序集成到 OKTA 以进行用户身份验证,但不确定如何直接通过 Web 服务调用从 OKTA 获取 SAML 令牌。

我们已经使用 Windows 身份框架实现了从 Web 服务调用 ADFS(活动端点)以获取 SAML 令牌,并且它可以正常工作。

如果有人可以分享经验或指出解决方案,将不胜感激!

【问题讨论】:

标签: .net saml okta


【解决方案1】:

您可以使用以下序列来获取 SAML 断言:

1) 您可以使用 /api/v1/authn 来建立获取 sessiontoken。这将需要用户凭据。示例请求如下所示:

{
  "username": "john.doe@foo.com",
  "password": "myPa$$word",
  "relayState": "/myapp/some/deep/link/i/want/to/return/to",
  "options": {
  "multiOptionalFactorEnroll": false,
  "warnBeforePasswordExpired": false
}
}

响应将返回一个 sessionToken 值。

2) 现在使用该值作为输入,您可以使用 /api/v1/sessions?additionalFields=cookieToken 返回一个 cookieToken

请求将如下所示:

{
  "sessionToken": "1234123DGSABDaSDBasdbaasbdasdb-ABCDEAERasdlzxk"
}

响应将包含一个 cookieToken 值

3) 现在您可以使用会触发 SAML 的应用 SSO URL - 并在末尾附加一次性 cookietoken 以获取 SAML 断言。如果您将此 URL 粘贴到浏览器中,它实际上会将您登录到支持 SAML 的应用程序。

示例网址为:

https://myorg.okta.com/home/salesforce/0oa31deg4ABCDEFGHIJ/46?onetimetoken=1234123DGSABDaSDBasdbaasbdasdb-ABCDEAERasdlzxk

【讨论】:

  • 我正在尝试这种方法对 SharePoint 服务器进行身份验证,但是当我使用从 /api/v1/authn 返回的 sessionToken 调用 /api/v1/sessions?additionalFields=cookieToken 端点时,响应始终为 403 -Forbidden ["Invalid session"],即 { "errorCode": "E0000005", "errorSummary": "Invalid session", "errorLink": "E0000005", "errorId": "oaew0udr2ElRfCnZvBFt075SA", “错误原因”:[] }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多