我正在尝试将Azure Active Directory凭据从Angular 2应用程序传递到 ASP.NET Core 2.0 Web API,以便Web API可以根据用户的属性和权限做出反应。
如果我在 Angular 应用中进行身份验证,如何将凭据传递给 API 进行身份验证?
如果我使用的是OpenIdConnect,则需要在Microsoft URL中输入用户名和密码。
首先,您必须在 Azure Active Directory 中注册两个应用程序
- 您的用户界面(角度(
- 您的 API (ASP.NET 核心 2.0(
您必须允许 UI 代表用户访问 API。另外,不要忘记为 UI 应用程序启用隐式流,因为它是 SPA。
对于UI中的身份验证,我可以推荐Manfred Steyer的OpenID认证angular-oauth2-oidc NPM模块。该包具有一个很酷的功能,无需手动将持有者令牌添加到针对 API 的每个请求中。您可以改为在配置中指定需要访问令牌的 URL:
OAuthModule.forRoot({
resourceServer: {
allowedUrls: ['http://YourApi.com/'],
sendAccessToken: true
}
})
我通过注册我的 api 并使用 microsoft-adal-angular6 软件包将其设置为 angular 来解决此问题,该链接包含有关如何设置它的信息。在您的 api 中,您需要添加以下代码:
在启动中.cs 和比在配置服务中:
// THIS IS THE IMPORT PART OF CODE
services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
.AddAzureADBearer(options => Configuration.Bind("AzureAd", options));
在启动时.cs配置添加:
app.UseAuthentication();
现在在appsettings.json中添加这个:
"AzureAd": {
"Instance": "YOUR AZURE LOGIN LINK",
"Domain": "YOUR AZURE LOGIN DOMAIN LINK",
"TenantId": "YOUR AZURE AD",
"ClientId": "APPLICATION ID",
"CallbackPath": "localhost:xxxx/home"
}