通过 Curl OpenId

发布于 2024-10-26 19:51:45 字数 54 浏览 0 评论 0原文

如何使用 Curl 进行基于 OpenId 的身份验证? 首先我能做到吗? 问候, 阿拉巴克什

How can I do OpenId based authentication using Curl?
At first place can I do it?
Regards,
Allahbaksh

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

堇色安年 2024-11-02 19:51:45

我想你正在谈论curl命令行,而不是库。我没有尝试过,但是根据我对OpenID和curl的了解,应该是可以的。但是,还没有完全自动化。如果您想要真正轻松和通用,则必须“解析”身份提供商和内容提供商登录页面的内容。如果你知道你要去哪里并且不介意将你的服务和客户端耦合起来(没有仇恨),你可以首先向身份提供商进行身份验证,例如:

curl -iSsL --user-agent 'Mozilla/5.0' --cookie cookies --cookie-jar  cookies \
       --data login=$mylogin \
       --data passwd=$mypasswd \
       https://identprovider.example.com/login

然后将你的 OpenID 发布到内容提供商:

curl -iSsL --user-agent 'Mozilla/5.0' --cookie cookies --cookie-jar  cookies \
              --data openid="$myopenidurl" \
              http://contentprovider.example.com/login

这假设内容提供者已被授权使用身份提供者。
然后获取您的内容:

curl -iSsL --user-agent 'Mozilla/5.0' --cookie cookies --cookie-jar  cookies \
              http://contentprovider.example.com/interesting/content

请注意,这种方法并不安全,因为我在代码中对 POST uri 和字段进行了硬编码。为了解耦客户端和服务器,必须从响应中提取 uri 和字段名称。例如,在 bash 脚本中,您可以使用 sed

我认为这应该可行,但如果不行,那么您必须真正遵循重定向并提取 URI 和表单,因为某些参数可以在重定向 URI 或隐藏表单字段中传递。

I suppose you are talking about the curl command line, not the library. I have not tried, but according to what I know of OpenID and curl, it should be possible. However, not fully automated. You'll have to "parse" the content of the identity provider and of the content provider login pages if you want to be realy restful and generic. If you know where you're going and don't mind to couple your service and client (no hateoas), you can first authenticate with the identity provider, e.g.:

curl -iSsL --user-agent 'Mozilla/5.0' --cookie cookies --cookie-jar  cookies \
       --data login=$mylogin \
       --data passwd=$mypasswd \
       https://identprovider.example.com/login

and then post your OpenID to the content provider:

curl -iSsL --user-agent 'Mozilla/5.0' --cookie cookies --cookie-jar  cookies \
              --data openid="$myopenidurl" \
              http://contentprovider.example.com/login

This suppose that the content provider is already authorised to use the identity provider.
Then get your content:

curl -iSsL --user-agent 'Mozilla/5.0' --cookie cookies --cookie-jar  cookies \
              http://contentprovider.example.com/interesting/content

Note that this approach is not restful, since I hard encoded the POST uris and fields in the code. To decouple the client and the server, the uris and field names must be extracted from responses. In a bash script, you can use sed for example.

I think is should work, but if not, then you'll have to realy follow the redirects and extract URIs and forms, since some params can be passed in the redirect URIs or in hidden form fields.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文