Skip to content

Username Trasform Rules #11

@apashkov-ext

Description

@apashkov-ext

в ЛДАП-адаптере есть функция преобразования логина, включается секцией UserNameTransformRules.

В этой секции задаются правила трансформации юзернейма. Похожая штука есть и в радиусе. Но в радиусе трансформация происходит перед проверкой первого фактора, а в ЛДАП - перед проверкой второго.

Задача
Обогатить функционал трансформации в ЛДАП-адаптере таким образом, чтобы через секцию можно была задавать момент, когда вызывать трансформацию: перед первым фактором, перед вторым фактором.

Работать это должно примерно так
Адаптер парсит правила и раскидывает их по двум кучам: правила перед первым фактором, правила перед вторым.
Когда наступает момент проверки первого фактора, выполняются преобразования по правилам из первой кучи. Перед вторым - соответсвенно.

Обратить внимание
Сейчас эти правила работают в режимо "до второго фактора". Это означает, что если используется старый синтаксис, он по умолчанию улетает во вторую кучу.

Примеры
Стандартная секция (сейчас):

<UserNameTransformRules>

  <add match="USER_" replace="" />
  <add match="_" replace="." count="1" />
  <add match="_" replace="-" />
  
</UserNameTransformRules>

Обновленная секция (все вместе):

<UserNameTransformRules>

  <!-- До 1 фактора /-->
  <BeforeFirstFactor>
    <add match="USER_" replace="" />
    <add match="_" replace="." count="1" />
    <add match="_" replace="-" />
  </BeforeFirstFactor>
  
  <!-- До 2 фактора /-->
  <BeforeSecondFactor>
    <add match="USER_" replace="" />
    <add match="_" replace="." count="1" />
    <add match="_" replace="-" />
  </BeforeSecondFactor>
  
  <!-- легаси, которое расценивается, как "До 2 фактора" -->

  <add match="USER_" replace="" />
  <add match="_" replace="." count="1" />
  <add match="_" replace="-" />
  
</UserNameTransformRules>

Еще пример - тут все должно уйти во вторую кучу:

<UserNameTransformRules>
  
  <!-- До 2 фактора /-->
  <BeforeSecondFactor>
    <add match="USER_" replace="" />
    <add match="_" replace="." count="1" />
    <add match="_" replace="-" />
  </BeforeSecondFactor>
  
  <!-- легаси, которое расценивается, как "До 2 фактора" -->

  <add match="USER_" replace="" />
  <add match="_" replace="." count="1" />
  <add match="_" replace="-" />
  
</UserNameTransformRules>

Еще пример - должно уйти впервую и вторую:
Обновленная секция (все вместе):

<UserNameTransformRules>

  <!-- До 1 фактора /-->
  <BeforeFirstFactor>
    <add match="USER_" replace="" />
    <add match="_" replace="." count="1" />
    <add match="_" replace="-" />
  </BeforeFirstFactor>
  
  <!-- легаси, которое расценивается, как "До 2 фактора" -->

  <add match="USER_" replace="" />
  <add match="_" replace="." count="1" />
  <add match="_" replace="-" />
  
</UserNameTransformRules>

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions