Ошибка MSAL / B2C: «Сбой безопасного соединения» ПОСЛЕ получения действительного идентификационного токена - PullRequest
0 голосов
/ 24 декабря 2018

Краткое резюме:

У меня есть клиентский клиент Angular 7.0, использующий библиотеку MSAL-angular.js для аутентификации в приложении API .NET CORE.Оба размещаются на Azure с использованием B2C.

Приведенный ниже вызов возвращает действительный токен идентификатора в URL, но затем возникают следующие ошибки (незначительная разница в каждом браузере):

A.Chrome:

Этот сайт не может обеспечить безопасное соединение. Локальный хост отправил неверный ответ.ERR_SSL_PROTOCOL_ERROR

B.Firefox

Сбой безопасного соединения

Произошла ошибка при подключении к localhost: 4200.SSL получил запись, превышающую максимально допустимую длину.Код ошибки: SSL_ERROR_RX_RECORD_TOO_LONG

C.IE

Не удается безопасно подключиться к этой странице. Это может быть связано с тем, что сайт использует устаревшие или небезопасные параметры безопасности TLS.

Подробные шаги:

  1. Клиент аутентифицируется в MyAuth.service.ts
import { MsalService, BroadcastService } from '@azure/msal-angular';
// unrelated code...
export class MyAuthService{
constructor(private http: HttpClient, 
private authService : MsalService,  
private broadcastService: BroadcastService,
private httpService: HttpServiceHelper) { }

public loginMSAL() {
this.authService.loginPopup(["openid", "offline_access",
"https://myBusinessName.onmicrosoft.com/api-dev/user_impersonation"]).  
then(function (idToken: any) {
  console.log("token: "+idToken); //This never gets hit.
});
console.log("...exit loginMSAL()..."); //
}
Появляется всплывающее окно для входа в систему пользователя с этим URL (идентификатор «04d8c97b» - это мой идентификатор клиента Azure B2C , mybusinessname.onmicrosoft.com):
https://login.microsoftonline.com/04d8c97b-23df-4533-b5fe-197f0117556c/oauth2/v2.0/authorize
?response_type=id_token
&scope=offline_access
%20https%3A%2F%2Fmybusinessname.onmicrosoft.com
%2Fapi-dev
%2Fuser_impersonation
%20openid
%20profile
&client_id=0af5e22c-1233-470f-b2a8-e47038c69524 //This is my angular web client's ID on Azure.
&redirect_uri=https%3A%2F%2Flocalhost%3A4200%2F
&state=c5a0006a-80f0-4d25-9eeb-49ddd0bc292b
&nonce=2699ca31-52f3-455b-9906-137772f2f0a8
&client_info=1&x-client-SKU=MSAL.JS
&x-client-Ver=0.2.1
&client-request-id=d9eed293-c1bd-4f75-a824-dc0bfe956c17
&prompt=select_account
&response_mode=fragment
&sso_reload=true

2.a) Кажется, что всплывающее окно входа в систему работает нормально.Он показывает имя учетной записи, в которую я вошел ранее, testUser1@mybusinessname.onmicrosoft.com.

2.b) Ввод пароля работает нормально, ТО начинается боль.

Во всплывающем окне отображаются вышеуказанные ошибки, но URL-адрес изменится на следующий, показывая, что был получен действительный токен идентификатора.URL:

https://localhost:4200/#id_token=eyJ0e ... длинный токен здесь ...

& state = 26deef89-94db-49ec-94a6-fbb6e7f93f13

& session_state = ca5489a4-842a-48f2-9fa5-7b85a1582d55

Помещая токен в jwt.ms, он выглядит корректно:
 {
      "typ": "JWT",
      "alg": "RS256",
      "kid": "nbCwW11w3XkB-xUaXwKRjLjMHGQ"
    }.{
      "aud": "0af5e22c-1233-470f-b2a8-e47038c69524",
      "iss": "https://login.microsoftonline.com/04d8c97b-25df-4533-b5fe-197f0117556c/v2.0", *//This is the ID for my Azure B2C Tenant, 'mybusinessname.onmicrosoft.com'*
      "iat": 1545600536,
      "nbf": 1545600536,
      "exp": 1545604436,
      "aio": "ATQAy/8JAAAARe1ST0VN1rzLio14LI4Y6B6VcY1nPurvB2G+FOWLjs/3QtkQdiHfRVnpgw6Ohm/2",
      "name": "TestUser1",
      "nonce": "ee43f038-bb35-438f-a9ca-2ca8b649dea4",
      "oid": "2755d0c4-19ab-495e-9441-4ae6fe87e17a",
      "preferred_username": "testUser1@mybusinessname.onmicrosoft.com",
      "sub": "WcB02vJDa7vzfgWbJTY8m604eYhGosphCmr569Wc7Yc",
      "tid": "04d8c97b-25df-4533-b5fe-197f0117556c",
      "uti": "mC5BVa6fukuEXIVB5jJYAA",
      "ver": "2.0"
    }.[Signature]
Не уверен, что это уместно, но вот моя конфигурация MSAL:
    @NgModule({
  imports: [
    CommonModule,
    MsalModule.forRoot({
      clientID: '0af5e22c-1233-470f-b2a8-e47038c69524', // Azure B2C ID for my angular web client, 'mybusinessname-web-dev'.
      authority: "https://login.microsoftonline.com/mybusinessname.onmicrosoft.com",
      redirectUri: "https://localhost:4200/", 
      cacheLocation : "sessionStorage",
      postLogoutRedirectUri: "https://localhost:4200/",
      navigateToLoginRequestUrl: false,
      unprotectedResources: ["https://localhost:4200/"],
      popUp: true,
      validateAuthority: false
    })

Благодарим за любую возможную помощь!

1 Ответ

0 голосов
/ 27 декабря 2018

Токен не имеет никакого отношения к этой ошибке.Возможно, проблема связана с услугой хостинга.Используя сетевые инструменты / fiddler, будет полезно понять, какой extact call возвращает ошибки TLS.Если вызов для получения токена возвращает его, это будет проблема B2C, иначе это будет проблема с конечной точкой, где размещена ваша служба.

Вы также можете следить за этим Проблемы с TLS в Chrome

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...