【发布时间】:2018-11-07 17:25:24
【问题描述】:
环境
- Angular 5 前端
- ASP.NET WebAPI 2
- WebAPI 上的 AzureAD 身份验证
配置
- WebAPI 为所有人启用了 CORS (***)
- AzureAD 启用 OAuthImplicitFlow
- Angular 和 WebAPI 托管在同一个 IIS 的不同端口中
挑战
当通过浏览器直接调用 WebAPI 时,AzureAD 身份验证挑战工作正常并且调用获得授权。但是,当 Angular 调用 WebAPI 时,AzureAD 的身份验证质询会引发 CORS 问题。
Angular 应用程序不会直接调用 Azure(通过 adal-angular),它应该只通过 WebAPI 调用。 Angular 应用程序成功地在 WebAPI 上成功调用了不受保护的 GET/POST 函数,因此 Angular-WebAPI 连接性很好。
(更新 1 Angular APP 调用 ADAL-ANGULAR 以通过 Azure 进行身份验证并获取令牌,然后将相同的令牌作为承载传递给 WebAPI)
任何想法我在这里错过了什么?可以根据需要提供任何特定的代码/配置。
代码
WebAPI
[HttpGet]
[Authorize]
[Route(ApiEndPoint.AzureAD.GetMyProfile)]
public async Task<ADUser> GetUserProfile()
{
ADUser user = null;
GraphFacade graphFacade = new GraphFacade(this.graphServiceClient);
user = await graphFacade.GetMyProfileDetails();
return user;
}
角度
Authenticate(): Observable<any> {
this.authServerUrl = "https://localhost:44371/"; // This is where WebAPI is running
let httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };
let authRequest = this._http.get<any>(this.authServerUrl + '/api/aduser/profile', httpOptions);
return authRequest;
}
错误信息
加载失败 https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=fba45f7b : 对预检请求的响应未通过访问 控制检查:不存在“Access-Control-Allow-Origin”标头 请求的资源。因此不允许访问 Origin 'null'。
【问题讨论】:
-
您希望在 Angular 应用中调用 /api/aduser/profile 时被重定向到 AAD SigninPage?
-
这是目标,但是,我的设计可能不正确。请指教
标签: angular azure cors asp.net-web-api2 azure-active-directory