Desire2Learn Valence API非交互式身份验证

时间:2012-05-08 17:21:44

标签: desire2learn

在Desire2Learn Valence API中,是否存在服务器应用程序的非交互式身份验证流程? Valence文档似乎假设任何身份验证应用程序都是交互式客户端进程。

3 个答案:

答案 0 :(得分:3)

我们实际上通过非交互式登录网站来实现这一目标。 如果您尝试此路线,请确保获取d2lSecureSessionVal,d2lSessionVal和Login Cookie,并将其添加到您的后续请求中。

请求1:     1> POST http {s}://elearning.test.masked.edu/d2l/lp/auth/login/login.d2l     1>内容类型:application / x-www-form-urlencoded     userName = {您的用户名}&密码= {您的密码}

回应1:

1 < Set-Cookie: LoginKey=; expires=Sat, 01-Jan-2000 05:00:00 GMT; path=/
1 < Set-Cookie: d2lSecureSessionVal=masked; path=/; HttpOnly  <-- grab this
1 < Set-Cookie: Login=true; path=/   <-- grab this
1 < Set-Cookie: d2lSessionVal=masked; path=/   <-- grab this

请注意,在此请求中,目标并不重要 要求2:     2&gt; GET http {s}://elearning.test.masked.edu:443 / d2l / auth / api / token?x_a = ZNsxGYZuSmasked&amp; x_b = 7jkhCKfEmaked&amp; x_target = https%3A%2F%2Fwww.maked.edu     2&gt; Cookie:d2lSecureSessionVal =蒙面; d2lSessionVal =掩蔽的;登录= TRUE;

它会尝试将您重定向到目标网站。忽略重定向,x_a就是你真正想要的。

回应2:

2 < 302
2 < X-AspNet-Version: 2.0.50727
2 < Date: Tue, 09 Oct 2012 14:03:45 GMT
2 < Content-Length: 248
2 < X-XSS-Protection: 0
2 < Location: http{s}://www.masked.edu?x_a=DxHmasked&x_b=aQVkg-7jkhCKfEmaked&x_c=IfLBcKYFf8masked
2 < Set-Cookie: TS50cdf6=masked; Path=/
2 < Content-Type: text/html; charset=utf-8
2 < X-Powered-By: ASP.NET
2 < Cache-Control: private
2 < 

从此回复中抓取x_a并在请求中将其用作x_b

第一次是bugger,因为有一个页面显示一个复选框以允许来自特定主机的请求。我们抓住了auth令牌请求并在浏览器中弹出它。在选中框以便始终允许之后,一切正常。

另请注意,身份验证令牌偶尔会过期。确保为此编码并在发生时重新进行身份验证。

答案 1 :(得分:3)

我使用了PHP示例代码中的入门示例代码,该代码在您登录后向您显示浏览器中的用户密钥,以获取我创建的“服务帐户”的密钥。

然后我将这些放入一个PHP类中,我可以重用它来建立连接。所以在我的代码中,我可以调用

$authcontext = d2l::connect();

它真的像一个魅力。

答案 2 :(得分:0)

这与位于此处的问题有些联系:

Authenticaton Method for Desire2Learn REST API vs SOAP

Valence API确实需要发生交互式身份验证步骤,但是,这可以在“安装时”为非交互式应用程序完成。该过程的结果是可以“长时间”使用的密钥。

对于某些版本和服务包级别,这是30天,但是,可以使“未过期”。 “未过期”是预期的默认值,但是,如果您的实例仍然设置为30天,则可以提出支持请求以进行更改。