#azure-ad-b2c
Вопрос:
Даже после нескольких дней чтения и прохождения нескольких учебных пособий я все еще не могу понять, как использовать пользовательские политики AAD B2C для организации пользовательского интерфейса входа / регистрации. В качестве отправной точки я использую стартовый пакет для социальных и локальных счетов.
Я бы хотел:
- Переместите учетные записи в социальных сетях над разделом «Электронная почта/пароль». Возможно, я мог бы добиться этого с помощью пользовательского css страницы, но, конечно, я должен иметь некоторый контроль над содержимым страницы с помощью пользовательских политик, или все это жестко задано так, как оно представлено?
- Я хочу добавить ссылку на условия только на странице регистрации. Этого я не могу сделать в css пользовательской страницы, потому что тогда она также появляется на странице входа в объединенный поток входа/регистрации. Я включил js, чтобы я мог заменить текстовый элемент гиперссылкой на термины, как указано в документах MS. Однако в этом примере предполагается, что у вас будет флажок, но я этого не хочу. Только простой div с условиями по гиперссылкам, которые пользователь может прочитать. Я не могу понять, как вставить простое текстовое поле в форму, которая будет отображаться только на странице регистрации, потому что я не вижу, как создаются элементы на страницах. Являются ли они жестко закодированными на основе утверждений?
ПС! Я читал, что вы не должны редактировать TrustFrameworkBase.xml, но для того, чтобы удалить типы утверждений из формы, такие как имя, фамилия и отображаемое имя, я не могу найти другого способа. Я могу добавить новые вещи в TrustFrameworkExtensions.xml, но я не могу удалить вещи из базы, так как это, кажется, объединяет их.
Ответ №1:
Для #1 я в конечном итоге использовал css, как предложил Джас Сури. В моем unified.css я добавил
.claims-provider-list-buttons, .social {
display: block !important;
}
Это удаляет социальные логины из нижнего колонтитула таблицы, и, таким образом, она оказывается сверху. Обратите внимание, что в версии 1.2.0 (u rn:com:microsoft:aad:b2c:элементы:контракт:выбор поставщиков:1.2.0) это .социальный, но в 2.1.4 это .кнопки списка поставщиков претензий — поэтому я нацелен на оба.
Для немного большего интервала перед входом в систему электронной почты я также добавил:
#localAccountForm {
margin-top: 40px;
}
Для №2, в TrustFrameworkBase.xml Я добавил новый тип утверждения:
<ClaimType Id="extension_terms">
<DisplayName>Accept terms, but this will never be shown as hidden by css</DisplayName>
<DataType>boolean</DataType>
<UserInputType>CheckboxMultiSelect</UserInputType>
<Restriction>
<Enumeration Text="" Value="true" SelectByDefault="true" />
</Restriction>
</ClaimType>
Добавлен <OutputClaim ClaimTypeReferenceId="extension_terms" />
в технический файл
LocalAccountSignUpWithLogonEmail.
В unified.css пользовательских страниц я удостоверяюсь, что флажок и текст никогда не отображаются:
#extension_terms_true {
display: none;
}
label[for="extension_terms_true"] {
display: none;
}
Затем я создаю новый файл js custom-ui.js включено в custom-ui.html как обычно: <script src="https://filmwebidlogintest.blob.core.windows.net/filmwebidloginblob/js/custom-ui.js"></script>
Этот файл js содержит:
function addTermsOfUseLink() {
// find the terms of use label element
var termsOfUseLabel = document.querySelector('#api label[for="extension_terms"]');
if (!termsOfUseLabel) {
return;
}
termsOfUseLabel.innerHTML = 'To use this service you must accept <a href="https://www.yourterms.no" target="_blank">the service terms</a> and <a href="https://www.yourgdpr.no" target="_blank">privacy terms</a>.';
}
$(document).ready(function () {
addTermsOfUseLink();
});
Я чувствую, что это очень банально, но это работает, и я не могу найти лучшего решения.
Для получения информации о пользовательском HTML/CSS, который я использовал, прочитайте эту документацию MS.
Комментарии:
1. Вы можете просто использовать тип утверждения абзаца в AAD B2C и задать для него значение по умолчанию текста, который вы хотите отобразить, и использовать его в качестве выходного утверждения в техническом профиле регистрации. docs.microsoft.com/en-us/azure/active-directory-b2c/…
2. Для #1 нужно использовать CSS/JS
3. Можно отредактировать базу, чтобы удалить то, что вы не хотите показывать на экране, это действительно единственное исключение. И да, мы объединяем технические профили между файлами.