qbnk / frontend-components-aad-oidc
Azure AD OpenID Connect(混合流程),是针对基于Slim的前端组件的一部分。
1.1.0
2023-05-22 12:55 UTC
Requires
- php: >=7.1
- ext-json: *
- slim/slim: ^3.8
- thenetworg/oauth2-azure: dev-master#83465d3
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用户。