如何搭建一套Azure AD与ADFS集成身份的环境

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何搭建一套Azure AD与ADFS集成身份的环境相关的知识,希望对你有一定的参考价值。

参考技术A AWS支持使用SAML(安全断言标记语言) 2.0进行身份联合。使用SAML,你可以配置你的AWS账户与你的身份提供商(IdP)整合。一旦配置,你组织的身份提供商就会对你的联合用户进行验证和授权,然后联合用户可以使用单点登录方法登录到AWS管理控制台...

如何将 Azure AD 身份验证与 .net core mvc 中的自定义角色存储集成?

【中文标题】如何将 Azure AD 身份验证与 .net core mvc 中的自定义角色存储集成?【英文标题】:How to Integrate Azure AD authentication with custom Role store in .net core mvc? 【发布时间】:2021-05-13 03:21:32 【问题描述】:

我有使用 .net core mvc 创建的 Web 应用程序,并启用了 azure AD 身份验证,并且有带有角色和用户表的 postgress 数据库。

Startup.cs 如下

public void ConfigureServices(IServiceCollection services)
    
        services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
            .AddAzureAD(options => Configuration.Bind("AzureAd", options));

        ValidateToken(services);

        services.AddControllersWithViews(options =>
        
            var policy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .Build();
            options.Filters.Add(new AuthorizeFilter(policy));
        );

        services.AddRazorPages();

        //ConfigureElsa(services);

        ConfigureDatabaseContext(services);
        ConfigurePolicies(services);
        ConfigureHandlers(services);
    

我已经在 azure 门户中注册了应用程序,一切正常。

我需要知道如何将它与我现有的数据库角色集成。

有人可以帮助我吗?

谢谢

【问题讨论】:

【参考方案1】:

看起来最适合您的方案的是 Azure 广告中的 app roles 功能。这是一个sample,它演示了如何定义角色以及如何使用 asp.net 核心类中的属性来根据角色声明执行 AuthZ。 您可以利用 MS Graph API 的 application patch endpoint 动态添加应用角色。只需编写一个实用程序来从本地角色数据库中导入应用程序角色,然后点击端点以使用新的应用程序角色修补您的应用程序注册。 这是一个示例补丁请求。

URL https://graph.microsoft.com/v1.0/applications/3e7d226f-2c9b-4d28-b3ce-6a9353753hah


    "appRoles": [
        
            "allowedMemberTypes": [
                "User",
                "Application"
            ],
            "description": "TestRole",
            "displayName": "TestRole",
            "id": "6cd9c306-9252-4092-b52a-960016053356",
            "isEnabled": true,
            "origin": "Application",
            "value": "TestRoles"
        
    ]

请注意以下是权限要求。

以下 PowerShell 脚本将使您能够在现有应用程序注册中创建应用程序角色

Connect-AzureAD -TenantId <TenantId>
# Create an Azure AD role of given name and description
Function CreateAppRole([string] $Name, [string] $Description)

$appRole = New-Object Microsoft.Open.MSGraph.Model.AppRole
$appRole.AllowedMemberTypes = New-Object System.Collections.Generic.List[string]
$appRole.AllowedMemberTypes.Add(“User”);
$appRole.AllowedMemberTypes.Add(“Application”);
$appRole.DisplayName = $Name
$appRole.Id = New-Guid
$appRole.IsEnabled = $true
$appRole.Description = $Description
$appRole.Value = $Name;
return $appRole

# ObjectId for application from App Registrations in your AzureAD
$appObjectId = “<ObjectId>”
$app = Get-AzureADMSApplication -ObjectId $appObjectId
$appRoles = $app.AppRoles
Write-Host “App Roles before addition of new role..”
Write-Host $appRoles
$newRole = CreateAppRole -name “NewApplicationName” -description “New application description”
$appRoles.Add($newRole)
Set-AzureADMSApplication -ObjectId $app.Id -AppRoles $appRoles

如果此解决方案对您有帮助,请将其标记为已验证。

【讨论】:

但是如果我想添加更多可定制的解决方案,? 你想要的定制是什么?

以上是关于如何搭建一套Azure AD与ADFS集成身份的环境的主要内容,如果未能解决你的问题,请参考以下文章

使用 Azure Active Directory 或 ADFS 或 AD 的 SSO

验证与Azure AD的ADFS联合

Azure AD Connect 用户登录选项介绍

将 Piranha CMS 与 Azure AD 集成

Redhat BRMS 和 Azure AD 集成

如何在Linux快速搭建一套ADB环境