【发布时间】:2019-11-05 21:08:27
【问题描述】:
我有一个 Azure Function 应用程序,使用 google 登录(我现在只需要 google),但我无法正确验证
试验一:
- 我向我的 api 发出 get 请求:https://examplefunctions.azurewebsites.net/
- Google 身份验证弹出窗口
- 输入我的凭据
- 然后我向https://examplefunctions.azurewebsites.net/.auth/me 发出获取请求
- 我得到一个带有 access_token 和 id_token 以及 user_claims 等其他属性的 json
- 那我去找邮递员
- 向具有 AuthorizationLevel.Anonymous 的函数发出 get 请求:https://examplefunctions.azurewebsites.net/api/myfunction
- 在使用 OAuth 2.0 的自动化中输入 access_token
- 服务器返回 401:您无权查看此目录或页面。
- 然后将 access_token 替换为 post man 中的授权选项卡中的 id_token 信息,服务器返回相同的信息。
然后执行以下操作:
试验2:
- 在浏览器中转到https://examplefunctions.azurewebsites.net/.auth/login/google
- Google 身份验证弹出窗口
- 输入我的凭据
- 服务器重定向到具有此属性 authenticationToken 的 url
- 我在postman的OAuth2.0中输入了这个authenticationToken,返回同样的401:你没有权限查看这个目录或页面。
然后我这样做并进行身份验证:
试验3:
- 在浏览器中转到https://examplefunctions.azurewebsites.net/.auth/login/google
- Google 身份验证弹出窗口
- 输入我的凭据
- 服务器重定向到具有此属性 authenticationToken 的 url
- 在邮递员的标题中,我将 X-ZUMO-AUTH 的值放在 authenticationToken 中,然后以我预期的 json 的 OK 状态查看服务器响应.
但这里是试用 3 中的问题(唯一有效的)我没有收到索赔。 --> 这里我得到一个空的var claims = req.HttpContext.User.Claims;
我需要用户谷歌信息。另一件事是我不想使用像 X-ZUMO-AUTH 这样的标头登录,我想使用 OAuth 2.0 标准。
我不知道为什么我使用试用1和2无法访问,因为我登录后服务器返回一个令牌,这个令牌似乎没用。
一周来我一直在尝试做一个好的谷歌身份验证,但我做不到,我需要你的帮助。
注意:我将使用 angular、postman、xamarin 或颤振来使用这个 api
【问题讨论】:
-
您是从门户创建的功能吗?我从门户创建了一个基本功能,并且线索 3 对我有用,它成功返回
stable_sid和其他声明。功能应用程序可能不支持试用 1 和 2。请检查Azure Functions and App Service Authentication 以实现谷歌身份验证,并在此处提供示例AzureFunctionsEasyAuth
标签: azure azure-active-directory postman azure-functions azure-authentication