Bash 要对网站进行身份验证,请执行以下操作:

Bash 要对网站进行身份验证,请执行以下操作:,bash,authentication,curl,cookies,openid-provider,Bash,Authentication,Curl,Cookies,Openid Provider,我必须为我们的命令行应用程序(Django应用程序)启用OpenID for Ex:每当用户试图访问我们的API时,我必须确保使用OpenID(Microsoft/Google)对用户进行身份验证。我正在尝试编写一个Shell脚本来访问OpenID网站,然后将cookie存储在用户的机器上,每当他尝试访问第二个应用程序时,应该根据我存储在他的机器上的cookie授予他访问权限 我正在尝试使用上述方法,每当我尝试访问第二个url时,我都会收到一个错误:“您的浏览器当前设置为阻止Cookie。您需要

我必须为我们的命令行应用程序(Django应用程序)启用OpenID for Ex:每当用户试图访问我们的API时,我必须确保使用OpenID(Microsoft/Google)对用户进行身份验证。我正在尝试编写一个Shell脚本来访问OpenID网站,然后将cookie存储在用户的机器上,每当他尝试访问第二个应用程序时,应该根据我存储在他的机器上的cookie授予他访问权限

我正在尝试使用上述方法,每当我尝试访问第二个url时,我都会收到一个错误:“您的浏览器当前设置为阻止Cookie。您需要允许Cookie使用此服务。”

我的网站不在一个域上,它们使用OpenID进行身份验证

  • 我登录了第一个网站,该网站将我重定向到OpenID 网站(Azure广告)
  • 我使用带有用户名和密码的curl访问重定向的url 已成功删除并存储cookie
  • 当我试图登录到第二个网站使用下面的 行,我看到这个错误。(因为我存储了cookies,所以应该能够读取它们并打开第二个网站页面)
  • curl--cookie./somefilehttps://secondwebsite.com/b

    这是我的完整剧本

    #Setting redirect url in IP variable
    set IP=`curl -w "%{url_effective}\n" -I -L -s -S http://mysite1.com -o /dev/null`
    echo "Trying to Authenticate.."
    curl -L -s -S -I -k -v -i --user "username@microsoft.com" -D ./temp/cookie $IP
    echo "Authentication successful"
    #I need to check if the cookie is set or not, If it is set Authentication is successful
    
    echo "Trying to access the second url"
    #The below line is failing, When I wrote the whole content to html file, I see the error mentioned above (Your browser is currently set to block cookies. You need to allow cookies to use this service) 
    curl --cookie ./temp/cookie https://secondwebsite.com/
    
    总而言之,我有两个问题

  • 在无需登录的情况下将用户验证到第二个站点 再次
  • 有时身份验证url要求用户输入密码, 将发送给移动用户(双因素身份验证)。如果出现这种情况,有没有关于如何处理的建议

  • 有适当的安全方法使您的命令行应用程序能够访问API

    [OpenId Connect RFC](),允许您使用公共客户端[code flow]()获取访问令牌和刷新令牌。用户可以第一次这样做,以后使用时,命令行应用程序可以不断更新新的访问令牌并调用API

    Azure AD B2C提供了一些示例,展示了如何调用[code flow from a desktop application]()和相应的

    此链接有更多详细信息


    这样,您的命令行应用程序永远不会收集敏感信息,如密码或mfa详细信息。它调用浏览器,让AAD B2C执行最安全的身份验证配置,并为应用程序提供访问令牌。从那时起,命令行只使用access_令牌作为承载令牌,通常将其放在授权头中

    有一些适当的安全方法可以让命令行应用程序访问API

    [OpenId Connect RFC](),允许您使用公共客户端[code flow]()获取访问令牌和刷新令牌。用户可以第一次这样做,以后使用时,命令行应用程序可以不断更新新的访问令牌并调用API

    Azure AD B2C提供了一些示例,展示了如何调用[code flow from a desktop application]()和相应的

    此链接有更多详细信息


    这样,您的命令行应用程序永远不会收集敏感信息,如密码或mfa详细信息。它调用浏览器,让AAD B2C执行最安全的身份验证配置,并为应用程序提供访问令牌。从那时起,命令行只使用access_令牌作为承载令牌,通常将其放在授权头中

    根据规范,它需要浏览器交互,但我正在寻找完全基于命令行的身份验证。客户机必须能够与资源所有者的用户代理(通常是web浏览器)进行交互(),根据规范,它需要浏览器交互,但我正在寻找完全基于命令行的身份验证。客户端必须能够与资源所有者的用户代理(通常是web浏览器)交互()