如何使用 EntraID 保护 API

问题描述 投票:0回答:1

我们有一个本地API,需要通过第三方开发的移动APP来访问(不知道是什么技术)。目前,身份验证是通过用户/密码针对内部登录 API 完成的,该 API 返回一个令牌,然后在调用中使用该令牌,但必须停止使用 Azure AD (EntraID) 和 MFA 进行身份验证。

因此,问题是如何保护 API 的安全,以便我们可以保证调用已得到正确的身份验证,以及如何更改 APP 才能做到这一点。

.net azure authentication microsoft-entra-id
1个回答
0
投票

我同意您的观点,如果您使用用户名和密码对移动应用程序进行身份验证,则不支持启用 MFA 的用户帐户。参考这个MsDoc

因此,您可以利用移动应用程序和桌面应用程序使用的InteractiveBrowserCredential 身份验证

我创建了一个 Microsoft Entra 应用程序并公开了如下 API:

enter image description here

在移动和桌面应用程序平台中添加了 重定向 URL 为

http://localhost

enter image description here

已授予API权限:

enter image description here

为了确保 API 的安全,您可以使用以下代码:

using Azure.Core;
using Azure.Identity;
using System;

class Program
{
    static async Task Main(string[] args)
    {
        var scopes = new[] { "api://xxx/access_app" }; 

        var tenantId = "TenantID";
        var clientId = "ClientID";
        var options = new InteractiveBrowserCredentialOptions
        {
            TenantId = tenantId,
            ClientId = clientId,
            AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
            // MUST be http://localhost or http://localhost:PORT
            RedirectUri = new Uri("http://localhost"),
        };

        var interactiveCredential = new InteractiveBrowserCredential(options);

        var accessToken = await interactiveCredential.GetTokenAsync(new TokenRequestContext(scopes));
        Console.WriteLine($"Access Token: {accessToken.Token}");
    }
}

我使用启用了 MFA 的用户登录:

enter image description here

成功生成API的访问令牌:

enter image description here

enter image description here

使用上述访问令牌,您可以调用您的API。

参考:

选择 Microsoft Graph 身份验证提供程序 - Microsoft Graph |微软

© www.soinside.com 2019 - 2024. All rights reserved.