qbnk/frontend-components-aad-oidc

Azure AD OpenID Connect(混合流程),是针对基于Slim的前端组件的一部分。

1.1.0 2023-05-22 12:55 UTC

This package is auto-updated.

Last update: 2024-09-22 15:42:43 UTC


README

是qbnk/frontend-components包的一部分。
此包包含一个Azure AD Open ID connect更新器,用于通过Azure AD使用Open ID Connect混合流程登录用户。

混合流程与正常认证流程略有不同,因为它不需要访问令牌。相反,它会获取ID令牌,并通过该令牌验证用户。这意味着任何有微软账户的人都可以登录到网站,因此必须定义用户可以属于的租户ID列表,以便登录功能正常。

使用混合流程时,不需要客户端密钥,只需要客户端ID。因此,无法获取访问令牌。

在Azure AD中,必须定义一个返回URL(即成功登录后发送ID令牌的位置)。
此URL将由适配器自动设置,并将是网站URL后跟/oidc/token_verification

在依赖项中定义适配器

从版本1.0.7开始,Frontendcomponentsaadoidc支持Open Id Connect b2c。在您的配置文件中指定所需的值。

use QBNK\FrontendComponents\Auth\Adapter\OIDC;

$container[QB_AUTH_OIDC] = function(ContainerInterface $container) use ($app) {
    $settings = $container->get(QB_SETTINGS)[QB_AUTH_OIDC];
    return new OIDC($app, $settings);
};

不要忘记在routes.php文件中注册路由。

$app->getContainer()->get(QB_AUTH_OIDC)->registerRoutes($app);

示例设置

$settings = [
    'allowedTenants' => [
        'tenant 1',
        'tenant 2',
    ],
    'allowedIssuer' => ['https://mediaportal.qbank.se'],
    'allowedAudience' => ['audience 1'],
    'clientId' => !empty($_ENV['QBANK_API_CLIENT_ID']) ? $_ENV['QBANK_API_CLIENT_ID'] : '',
    'allowExternalUsers' => true,
    'internalEmailAddresses' => ['customer.com'],
    'groupMapping' => [
        'defaultInternalUserGroups' => ['Group name' => 1],
        'defaultExternalUserGroups' => ['Group name' => 2],
    ],
    'b2c' => true,
    'p' => 'B2C_1A_SIGNUP_SIGNIN',
    'scopes' => ['openid'],
    'tenant' => 'tenantName',
    'pathAuthorize' => "/oauth2/v2.0/authorize",
    'pathToken' => "/oauth2/v2.0/token",
    'QBankUserLookup' => true, // Will try to find a user with the OIDC username in QBank, and add the user to the Identity Session
    'urlLogin' => 'https://customer.b2clogin.com/', // if using 2bc
    'defaultAlgorithm' => '', // if using 2bc
    'allowedTenants' => ['Tenant ID'],
    'usernameClaim' => 'email', // set username from claims
    'allowedIssuer' => ['customer login url'],
    'allowedAudience' => [],
    'QBankUserLookup' => true,
    'includeUserDataCookie' => true // When session is stored in cookie
];

在执行登录时,调用适配器的authenticate方法。

/** @var \QBNK\FrontendComponents\Auth\Adapter\OIDC $oidc */
$oidc = $this->app->getContainer()->get(QB_AUTH_OIDC);
$returnTo = 'return url';
$params = []; // Ignored
$oidc->authenticate($returnTo, $params);

注销用户只需取消当前会话。将用户重定向到注销路由

$this->app->getContainer()->get(QB_ROUTER)->pathFor(OIDC::ROUTE_LOGOUT);

注意:此包当前不支持创建QBank用户。