如何通过iframe调用对第三方网站进行身份验证

古布卢

我正在与一所大学合作,需要整合我的课程-这样他们的学生才能在大学网站上访问它。我们将进行简单的iframe集成。

用户将要在大学网站上注册,他们会将用户信息传递给我,这样我就可以开始课程并访问我网站上的课程页面,这些页面将通过iframe显示在他们的网站上。

我的网站建立在LAMP上,我正在使用ZEND框架

这是我打算如何做的基本结构

1)在大学网站上,作为iframe代码的一部分-他们将调用我的一个动作课程并通过用户电子邮件

<iframe src="http://mywebsite/user/validate/email/[email protected]"></iframe>

2)现在在用户控制器中-验证操作-我将基本上检查用户是否不存在-​​创建新用户或使用其电子邮件加载现有用户并启动Zend Auth实例,并将该用户写入存储并重定向到他的课程页面如下所示

$currentUser = $userModel->loadUserProfileByEmail($this->_getParam('email'));
$auth = Zend_Auth::getInstance();
$storage = $auth->getStorage();         
$storage->write($currentUser);
return $this->_redirect('/user/my-courses/');

这是我到目前为止所拥有的-显然有效

我的问题

1)这是最好的方法吗 我没有用户密码,因为身份验证是在大学网站上进行的,他们不希望用户直接登录我的网站。

2)这是一个大问题。我对这个特定学院正在发出的验证身份的最佳方式感到困惑。我该如何处理-他们是否将加密令牌连同此iframe调用一起传递-只有我有解密它的密钥-我还没有这样做-我不知道我是否在简化一些简单的事情。

任何意见或建议将不胜感激谢谢

格雷厄姆·里奇

我可能误解了您的问题,但从我的收集中您需要:

-验证用户身份的方法

-能够跳过他们希望在首次加载时查看的页面及其电子邮件地址的功能。

其基础只是对称密钥身份验证-接下来是将其混搭的方法。

将您的数据放在一起(电子邮件地址,使用Page登陆),然后使用强键对数据进行哈希处理

解密另一端,瞧-完成。

如果您的密码(密钥)难以猜测,则此方法是安全的-以下是一种难以破解的方法。

认证

有两种方法可以执行此操作-如果您有权访问他们的服务器(或那里的人可以为您插入一些代码),则可以使用以下方法。

创建一个执行以下操作的php脚本。

我已经过度设计了这种方法,以显示使散列字符串难以破解的方式的负担-您可以选择自己的方式!

(伪代码)

$serverTimeStamp = timestamp;

$additionalNoise = "THEcat1sch33sy";

$time = $serverTimeStamp . "XAB"; <- needs to be a random code as delimeter.
$data =  $additionalNoise + "[email protected]";
$salt = "wh4tW0u1dB4tm4nD0?" + $serverTimeStamp;

$ password然后需要使用可逆哈希值进行哈希处理(mcrypt是一个很好的起点)

$encrypted = mcrypt of $data and $salt ($salt is shared key);

$authenticationcode = $time . $encrypted;

这将为您提供一个非常该死的强随机字符串,其前端带有时间戳,然后是XAB,然后是随机散列字符串。

然后将其传递给您的用户验证脚本。

<iframe src="http://yoursite/validate/COMPLETELYRANDOMSTRING"></iframe>

从那里您可以逆转该过程。

重要(修订)-我完全忘记了一个重要元素-将发送给您的随机字符串存储在数据库中。这些字符串是“一次性使用”的-如果您再次收到相同的字符串,则是一次攻击。

字符串中的时间戳和字符串的开头简化了所有操作-可以每天使用完全不同的字符串发送1000次相同的数据。

Get random string.

get time-stamp from front of random string -> using regex / index of looking for numbers and then XAB (hence the random XAB string - it is just a separator)

$timeStamp = "10200192XAB";

"wh4tW0u1dB4tm4nD0?" <-shared secret key.

$salt (secret key) = "wh4tW0u1dB4tm4nD0?" + $timeStamp;

用盐解密

您将数据放在前面

"THEcat1sch33sy" (your additional noise) (which is also a fixed shared key in effect)

只需剥离“ THEcat1sch33sy”,您就会拥有您的电子邮件地址(然后,您可以在一百万次机会中以1的概率验证该电子邮件地址,即随机字符串实际上在开始时会吐出“ THEcat1sch33sy”。

瞧-不是100%,但请相信我-如果我尝试进入您的服务器-我不会尝试这种方式!

通过页面

Simply add it to the $data - so you would pass $email + "seperator" + $coursepage.

希望这会有所帮助(并且很清楚)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在“第三方服务器”上对GKLocalPlayer进行身份验证?

来自分类Dev

如何安全地(通过适当的身份验证)与客户端上的第三方API通信?

来自分类Dev

Smartsheet API是否支持用于第三方身份验证的标准OAuth 2.0?

来自分类Dev

如何使用Java JDK 1.7在我的第三方服务器上对GKLocalPlayer进行身份验证?

来自分类Dev

第三方AD租户上的Azure AD身份验证

来自分类Dev

如何在Android中杀死/处理空闲线程(通过调用第三方应用程序阻止)

来自分类Dev

具有第三方库依赖关系的HiveMQ身份验证插件

来自分类Dev

如何通过Firebase调用第三方API?

来自分类Dev

HTTP API:向第三方传达对身份验证的需求

来自分类Dev

如何从Elixir调用第三方Erlang模块?

来自分类Dev

如何将ASP.net Identity与第三方REST服务一起使用以进行身份验证?

来自分类Dev

我应该使用什么HTTP代码进行第三方身份验证失败?

来自分类Dev

ASP.NET Core 3.1第三方身份验证

来自分类Dev

使用Laravel Passport登录第三方网站

来自分类Dev

通过Passport.js与React上的第三方(discord)进行身份验证在本地工作,但在Heroku上托管时无法

来自分类Dev

如何通过浏览器DevTools在第三方站点触发输入表单验证?

来自分类Dev

向需要身份验证的第三方发出API请求

来自分类Dev

Google Data Studio连接器在第三方进行身份验证

来自分类Dev

如何从Django中的第三方网站获取我的网站的数据

来自分类Dev

Powershell-脚本由第三方调用,如何对提升的凭证进行硬编码

来自分类Dev

如何通过iframe调用对第三方网站进行身份验证

来自分类Dev

使用PHP脚本而不使用第三方软件的SMTP身份验证

来自分类Dev

如何使用django的基本访问身份验证将客户端登录到第三方网站

来自分类Dev

Office for Desktop和第三方身份验证的应用程序

来自分类Dev

如何自动从第三方网站对网站进行数据库搜索?

来自分类Dev

没有API的第三方网站抓取

来自分类Dev

通过网站链接在第三方Facebook墙上写评论

来自分类Dev

.NET中的Active Directory第三方身份验证

来自分类Dev

iframe或JS将Rails嵌入第三方网站?

Related 相关文章

  1. 1

    如何在“第三方服务器”上对GKLocalPlayer进行身份验证?

  2. 2

    如何安全地(通过适当的身份验证)与客户端上的第三方API通信?

  3. 3

    Smartsheet API是否支持用于第三方身份验证的标准OAuth 2.0?

  4. 4

    如何使用Java JDK 1.7在我的第三方服务器上对GKLocalPlayer进行身份验证?

  5. 5

    第三方AD租户上的Azure AD身份验证

  6. 6

    如何在Android中杀死/处理空闲线程(通过调用第三方应用程序阻止)

  7. 7

    具有第三方库依赖关系的HiveMQ身份验证插件

  8. 8

    如何通过Firebase调用第三方API?

  9. 9

    HTTP API:向第三方传达对身份验证的需求

  10. 10

    如何从Elixir调用第三方Erlang模块?

  11. 11

    如何将ASP.net Identity与第三方REST服务一起使用以进行身份验证?

  12. 12

    我应该使用什么HTTP代码进行第三方身份验证失败?

  13. 13

    ASP.NET Core 3.1第三方身份验证

  14. 14

    使用Laravel Passport登录第三方网站

  15. 15

    通过Passport.js与React上的第三方(discord)进行身份验证在本地工作,但在Heroku上托管时无法

  16. 16

    如何通过浏览器DevTools在第三方站点触发输入表单验证?

  17. 17

    向需要身份验证的第三方发出API请求

  18. 18

    Google Data Studio连接器在第三方进行身份验证

  19. 19

    如何从Django中的第三方网站获取我的网站的数据

  20. 20

    Powershell-脚本由第三方调用,如何对提升的凭证进行硬编码

  21. 21

    如何通过iframe调用对第三方网站进行身份验证

  22. 22

    使用PHP脚本而不使用第三方软件的SMTP身份验证

  23. 23

    如何使用django的基本访问身份验证将客户端登录到第三方网站

  24. 24

    Office for Desktop和第三方身份验证的应用程序

  25. 25

    如何自动从第三方网站对网站进行数据库搜索?

  26. 26

    没有API的第三方网站抓取

  27. 27

    通过网站链接在第三方Facebook墙上写评论

  28. 28

    .NET中的Active Directory第三方身份验证

  29. 29

    iframe或JS将Rails嵌入第三方网站?

热门标签

归档