我必须为我们的命令行应用程序启用OpenID(Django应用程序)对于Ex:每当用户尝试访问我们的API时,我必须确保用户使用OpenID(Microsoft / Google)进行身份验证。我正在尝试编写一个Shell脚本来访问OpenID网站,然后将cookie存储在用户的计算机上,每当他尝试访问第二个应用程序时,他都应该根据我存储在他计算机上的cookie进行访问。
我正在尝试使用here提及的方法,每当我尝试访问第二个网址时,我都会收到错误消息“您的浏览器当前已设置为阻止Cookie。您需要允许Cookie才能使用此服务。“
我的网站不在单个域上,他们使用OpenID进行身份验证。
curl --cookie ./somefile https://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/
总结一下,我遇到了两个问题
答案 0 :(得分:0)
有适当的安全方法可让您的命令行应用程序访问您的API。
[OpenId Connect RFC](http://openid.net/specs/openid-connect-core-1_0.html)允许您使用公共客户端[代码流](http://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth)来获取access_token和refresh_token。用户可以第一次执行此操作,并且以后使用命令行应用程序可以use the Refresh Tokens继续更新新的访问令牌并调用API。
Azure AD B2C提供了一些示例,说明如何调用[来自桌面应用程序的代码流](https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-devquickstarts-native-dotnet)和相应的GitHub。
这样,您的命令行应用程序永远不会收集密码或mfa详细信息等敏感信息。它调用浏览器让AAD B2C进行最安全的身份验证配置,并为app提供access_token。从那时起,命令行通常将access_token用作承载令牌,方法是将其放在Authorization标头中。