У меня есть два Angular 6 приложения, работающих в рабочей среде, которые используют Azure AD B2C .
Когда я начинал с первого проекта, это был Angular 2 (я также выполняю операции для этих проектов, поэтому они актуальны), я чувствовал, что MSAL не достаточно далеко, и я не смогнайдите пакет NPM для этого.Поэтому я решил использовать компонент с открытым исходным кодом angular-oauth2-oidc от Manfred Steyer, и я не жалею об этом.Компонент сертифицирован OpenID Connect и прост в использовании (за исключением Azure AD B2C ?).
Чтобы использовать компонент с Azure AD B2C, необходимо предоставить конфигурацию с некоторыми значениями, которые можно взять из документа обнаружения (например, https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=b2c_1_sign_in).. Так выглядит моя конфигурация:
export const aadB2cNoDiscoveryConfig: AuthConfig = {
'clientId': '<GUID>',
'redirectUri': window.location.origin,
'loginUrl': 'https://login.microsoftonline.com/<TENANT>.onmicrosoft.com/oauth2/v2.0/authorize?p=b2c_1_signin',
'logoutUrl': 'https://login.microsoftonline.com/<TENANT>.onmicrosoft.com/oauth2/v2.0/logout?p=b2c_1_signin',
'scope': 'openid https://<TENANT>.onmicrosoft.com/<TENANT>.api/user_impersonation',
'oidc': true,
'issuer': 'https://login.microsoftonline.com/<GUID>/v2.0/',
'tokenEndpoint': 'https://login.microsoftonline.com/<TENANT>.onmicrosoft.com/oauth2/v2.0/token?p=b2c_1_signin',
'responseType': 'id_token token',
'clearHashAfterLogin': true,
'disableAtHashCheck': true,
'showDebugInformation': true,
'strictDiscoveryDocumentValidation': false,
'jwks': {
'keys': [
{
kid: "X5eX....",
nbf: 14....,
use: "sig",
kty: "RSA",
e: "AQAB",
n: "tV......"
}]
}
}
Для входа в систему я вызываю что-то подобное в конструкторе моего app.component
:
this.oauthService.configure(aadB2cNoDiscoveryConfig);
this.oauthService.tokenValidationHandler = new JwksValidationHandler();
this.oauthService.tryLogin()
Если мне нужно реализовать другое веб-приложение с Azure AD B2C, я быпопробуйте снова использовать MSAL, но без колебаний вернитесь к angular-oauth2-oidc.
Примечание: Если вы используете промежуточное ПО .NET Core для обслуживания Angular SPA, выможно просто добавить промежуточное программное обеспечение OpenID Connect. Это хорошая отправная точка для этого.