如何使用 Azure Active Directory for Web API 和 Angular App 实现身份验证



我正在尝试将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"

}

最新更新