Обоснование
Существующая поддержка конфиденциальности состоит из множества часто не связанных друг с другом функций, которые предоставляют очень ограниченный набор функций конфиденциальности, и это создает большой и постоянный спрос со стороны клиентов на все новые и новые сценарии.
Целями рефакторинга являются:
-
Обеспечьте согласованность поддержки конфиденциальности в нескольких существующих стандартах, таких как P-Asserted-Identity из RFC3325 и Remote-Party-Id из Draft-ietf-sip-privacy-04.
-
Сделайте возможным преобразование из одного стандарта в другой. Например, получите P-Asserted-Identity, но отправьте Remote-Party-Id.
-
Оптимизируйте конфигурацию Flysip.
-
Добавьте недостающие функции, запрошенные клиентами.
Для достижения этих целей в Flysip необходимо ввести понятие независимого от протокола Privacy ID. Идентичность не является ни P-Asserted-Identity , ни Remote-Party-Id, а является внутренней обобщенной сущностью, существующей для сеанса. Идея состоит в том, чтобы иметь возможность получать идентификационные данные по любому протоколу, а также отправлять их по любому протоколу.
Идентичность сеанса состоит из:
-
Идентификатор вызывающего абонента (имя пользователя из P-Asserted-Identity или Remote-Party-Id)
-
атрибут анонимности
Атрибут анонимности передается заголовком Privacy: SIP из RFC3325 или параметром «privacy» из заголовка Remote-Party-Id:, который может сопровождаться заголовком RPID-Privacy:, как указано в соответствующем стандарте.
Предлагаемая архитектура
Функции
Основные особенности:
-
Получить личность
-
Аутентификация с использованием личности
-
Отправьте полученное или сгенерированное удостоверение
-
Переписать исходящий CLI на основе Identity
CLI в приведенной ниже документации означает имя пользователя From : заголовок
Идентификационные данные никогда не следует отправлять на зарегистрированную учетную запись или в соединительную линию. Приведенные выше сценарии связаны с обращениями к поставщикам, как указано в SS-2728: Поддержка и обработка заголовка конфиденциальности ЗАВЕРШЕНО.
Получить личность
Идентичность может быть получена от вызывающего абонента. Для этой цели Учетная запись имеет атрибут Identity Schemas , который содержит список приемлемых протоколов в порядке предпочтения. Например:
-
Схемы идентификации = P-Asserted-Identity означает, что Flysip принимает P-Asserted-Identity и создает идентификатор сеанса на основе полученных значений.
-
Схемы идентификации = Remote-Party-Id, P-Asserted-Identity означают, что Flysip принимает либо P-Asserted-Identity, либо Remote-Party-Id, но предпочитает Remote-Party-Id P-Asserted-Identity.
-
Identity Schemas = Disabled означает, что Flysip игнорирует любые заголовки Identity .
Аутентификация с использованием личности
Flysip должен иметь возможность использовать полученное удостоверение для аутентификации. У учетной записи появился новый атрибут Trust Identity Headers , который позволяет использовать полученное удостоверение вместо CLI при поиске правила аутентификации учетной записи или DID.
Параметр Identity Auth Mode в системных параметрах/SIP, Media, LRN управляет способом выполнения аутентификации:
-
Расслаблено : сначала попробуйте пройти аутентификацию по Identity , а затем по CLI и используйте тот вариант, который окажется успешным.
-
Строгий — если идентификатор получен, не пытайтесь использовать CLI для аутентификации. По умолчанию для старых систем и новых сред.
-
Обязательно — никогда не используйте CLI и всегда полагайтесь только на Identity для аутентификации.
Отправьте полученное или сгенерированное удостоверение
Соединение поставщика имеет атрибут «Отправить идентификатор как» , который определяет, какой стандарт следует использовать для отправки информации о конфиденциальности поставщику. Возможные значения:
-
P-подтвержденная идентичность
-
Remote-Party-Id
-
Выключенный
Если идентификационные данные не были получены от вызывающего абонента, Flysip может их сгенерировать. Для этой цели соединение должно иметь параметр «Использовать CLI как идентификатор» .
Скрыть собственный параметр CLI в настройках учетной записи . В разделе «Анонимный вызов» применяется атрибут анонимности в идентификаторе D сеанса.
Исходящие заголовки SIP «P-Asserted-Identity» и «Remote-Party-Id» не отправляются, если параметр « Доверенный домен конфиденциальности» в соединении не отмечен флажком .
Заголовки, указывающие конфиденциальность, отправляются, если для параметра «Отправить идентификатор как» установлено значение «не выключено»:
-
случай заголовка P-Asserted-ID. Конфиденциальность со значением id будет отправлена, даже если параметр Trusted Privacy Domain в соединении не отмечен и PAI не отправляется.
-
случай заголовка Remote-Party-Id Rpid-privacy со значением party=calling;privacy=full будет отправлен, даже если параметр Trusted Privacy Domain в соединении не отмечен и RPID не отправляется
Переписать исходящий CLI на основе Identity
Соединение поставщика имеет параметр «Использовать идентификатор как CLI» в разделе «Дополнительные параметры».
Старые сценарии, которые следует охватить
-
Передайте входящий PAI в Connection, затем переведите и отправьте поставщику.
Установите для схемы идентификации в учетной записи значение P-Asserted-Identity, установите флажок « Передать идентификацию в учетной записи» , примените необходимый перевод для учетной записи и соединения для Identity Tr. Правило и выберите « Отправить идентификатор подключения как = P-Asserted-Identity», установите флажок « Доверенный домен конфиденциальности при подключении» .
-
Не передавайте входящий PAI в Connection ( передавать идентификатор в учетную запись не отмечено ) , вместо этого сгенерируйте его там на основе имени пользователя в заголовке From: (установите флажок Использовать CLI как идентификатор )
Снимите флажок «Передать удостоверение» в учетной записи, установите флажок « Использовать CLI в качестве удостоверения при подключении», установите « Отправить удостоверение как = P-Asserted-Identity при подключении», установите флажок « Доверенный домен конфиденциальности при подключении »
-
Перевести из: заголовок на основе PAI, полученного в учетной записи.
Установите для схемы идентификации в учетной записи значение P-Asserted-Identity, установите флажок « Передавать идентификацию в учетной записи» , установите флажок « Использовать идентификацию как CLI при подключении» .
-
Translate From: заголовок на основе идентификатора Remote-Party-Id , полученного в учетной записи.
Установите для схемы идентификации в учетной записи значение Remote-Party-Id, установите флажок « Передавать идентификацию в учетной записи» , установите флажок « Использовать удостоверение как CLI при подключении» .
Новые сценарии, которые следует охватить
-
Аутентифицировать вызов через полученный P-Asserted-Id , а не From
Установите флажок «Доверять заголовкам удостоверений учетной записи» , установите для « Схемы удостоверений учетной записи » значение «P-Asserted-Identity», в «Параметры системы/SIP, Media, LRN» установите для параметра «Режим аутентификации удостоверения» один из вариантов в соответствии с требованием: расслабленный/строгий/обязательный.
-
Аутентификация вызова через полученный Remote-Party-Id , а не From
Установите флажок «Доверять заголовкам удостоверений учетной записи» , установите для « Схемы удостоверений учетной записи » значение « Remote-Party-Id» , в «Системных параметрах/SIP, Media, LRN» установите для параметра «Режим аутентификации удостоверения» один из вариантов в соответствии с требованием: расслабленный/строгий/обязательный.
-
Добавьте к исходящему INVITE для поставщика заголовок Privacy со значением = id , когда вызов был аутентифицирован одним из вышеуказанных методов.
Установите флажок «Доверять заголовкам удостоверений учетной записи » , установите для « Схемы удостоверений учетной записи » значение «P-Asserted-Identity», в «Параметры системы/SIP, Media, LRN» установите для параметра « Режим аутентификации удостоверения» один из вариантов в соответствии с требованием: расслабленный/строгий/обязательный, установите Отправить идентификатор личности как = P-Asserted-Identity при соединении
-
Не передавайте входящий Remote-Party-Id в Connection , вместо этого сгенерируйте его там на основе имени пользователя в заголовке From :
Снимите флажок «Передать идентификатор личности» в учетной записи, установите флажок « Использовать CLI в качестве удостоверения при подключении», установите « Отправить идентификатор как = идентификатор удаленной стороны при подключении», установите флажок « Доверенный домен конфиденциальности при подключении»
-
Отправлять конфиденциальность: идентификатор, когда установлен флажок «Скрыть собственный CLI в учетной записи» или во входящем INVITE не получен CLI/Anonymous.
Установите «Отправить идентификатор как = P-Asserted-Id при подключении», снимите флажок «Доверенный домен конфиденциальности при подключении ». Примечание. В этом случае заголовок P-Asserted-Id НЕ будет сгенерирован, однако заголовок Privacy со значением id будет добавлен к исходящему INVITE.
-
Отправлять RPID-конфиденциальность, когда установлен флажок «Скрыть собственный CLI на учетной записи» или во входящем INVITE не получен CLI/Anonymous.
Установите «Отправить идентификатор как = Remote-Party-Id» , снимите флажок «Доверенный домен конфиденциальности при подключении» . Примечание. В этом случае заголовок Remote-Party-Id НЕ будет сгенерирован, однако заголовок RPID-Privacy со значением party=calling;privacy=full будет добавлен к исходящему INVITE.