Angularjs 如何对托管在azure上的angular web应用程序和.net web api使用google身份验证

Angularjs 如何对托管在azure上的angular web应用程序和.net web api使用google身份验证,angularjs,asp.net-web-api,azure-web-app-service,google-signin,google-authentication,Angularjs,Asp.net Web Api,Azure Web App Service,Google Signin,Google Authentication,我有一个与c#.net web api后端对话的有角度的web应用程序。 它们都托管在azure应用程序服务上。 Azure app services提供了一套身份验证服务,我选择使用google auth。 我已经在azure google auth中获得了我的google客户端id和机密设置,我的web应用程序正确显示并提示我输入google凭据。 我现在的问题是,我需要我的web api后端来验证web应用程序google令牌。我找不到任何演示以下内容的文章或教程: 如何获取令牌并将其发送

我有一个与c#.net web api后端对话的有角度的web应用程序。 它们都托管在azure应用程序服务上。 Azure app services提供了一套身份验证服务,我选择使用google auth。 我已经在azure google auth中获得了我的google客户端id和机密设置,我的web应用程序正确显示并提示我输入google凭据。 我现在的问题是,我需要我的web api后端来验证web应用程序google令牌。我找不到任何演示以下内容的文章或教程:

如何获取令牌并将其发送到web api?我已经读到azure应用程序服务应该自动注入必要的身份验证头,但对我的api的任何调用都不包括这些头。我应该手动调用auth/me并将它们添加到请求头中吗

如何让我的web api使用google auth对请求头中的详细信息进行身份验证?我是否需要一个单独的web api客户端id,还是应该重新使用web应用程序客户端id


干杯

根据您的描述,我假设您正在使用Azure应用程序服务提供的内置服务

AFAIK,应用服务认证(Easy Auth)提供了两个流:客户端管理的流和服务器管理的流。对于服务器管理的流程,服务器代码为您管理登录过程,您的后端将直接从相关身份提供商(如Google、AAD等)接收令牌,然后为无浏览器应用生成
authenticationToken
,为浏览器应用生成
AppServiceAuthSession
cookie。你可以关注细节

对于angular web应用程序,您可以只使用服务器管理的流,在用户成功登录后,您需要调用
https://.azurewebsites.net/.auth/me
检索google
access\u令牌
,然后针对web api端点发送以下请求,以检索
authenticationToken
,如下所示:

POST https://<your-webapi-app-name>.azurewebsites.net/.auth/login/google
Body {"access_token":"<the-google-access-token>"}
此外,您还可以在angular web应用程序中使用客户端管理的流,您可能需要直接与您的身份提供商(Google)联系,通过或其他第三方库检索客户端中的access_令牌。然后,您可能需要向angular web app和web API web app发送请求,以检索
authenticationToken
作为上述请求示例

我是否需要一个单独的web api客户端id,还是应该重新使用web应用程序客户端id

根据我的理解,您必须使用相同的谷歌应用程序。对于AAD身份验证,您可以将一个AAD应用配置为具有对另一个AAD应用的访问权限

GET https://<your-webapi-app-name>.azurewebsites.net/api/values
Header x-zumo-auth:"<authenticationToken-generated-by-your-webapi>"