如何在不使用浏览器的情况下从.NET Web服务代码中获取OKTA中的SAML令牌?

时间:2016-02-05 21:35:36

标签: .net saml okta

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

gravity

响应将返回sessionToken值。

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

请求将如下所示:

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

响应将包含cookieToken值

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

示例网址为:

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