Единственным эмитентом токена Azure AD является Azure AD.Вы должны не собирать имя пользователя / пароль в своих клиентах, и вы должны не принимать их в вашем сервисе.
Вашим клиентским приложениям просто нужно использовать MSAL (или ADAL, или любую клиентскую библиотеку OpenID Connect), чтобы отправить пользователя в Azure AD, заставить его войти в систему и в ответ получить токен доступа для вашего API.
Например, если ваш клиент был одностраничным приложением JavaScript, с MSAL для JavaScript вы могли бы сделать следующее:
var userAgentApplication = new Msal.UserAgentApplication(
'0813e1d1-ad72-46a9-8665-399bba48c201', // AppId of you client app
null, function (errorDes, token, error, tokenType, instance) {
// This callback only used loginRedirect OR acquireTokenRedirect.
}
);
var scopes = ["https://api.example.com/permission.scope"];
userAgentApplication.loginPopup(scopes).then(function (token) {
// Get the signed-in user
var user = userAgentApplication.getUser();
// Get an access token for the signed-in user
userAgentApplication.acquireTokenSilent(scopes).then(function (token) {
// Use the access token to call your API
$.ajax({
url: 'https://api.example.com/foo',
type: 'GET',
dataType: 'json',
headers: { 'Authorization': 'Bearer ' + token },
contentType: 'application/json; charset=utf-8',
success: function (result) {
// TODO: Do something cool with the API response.
},
error: function (error) {
// TODO: Do something smart if there's an error
}
});
}, function (error) {
// TODO: Silent token acquisition failed, retry with acquireTokenPopup()
});
}, function (error) {
// TODO: Deal with error.
});
(Конечно, вы можетесделать это для различных других платформ.)