Использование MSAL и Angular зачем нужны две отдельные регистрации приложений AAD?

#.net #angular #azure-active-directory #msal

#.net #angular #azure-active-directory #azure-ad-msal

Вопрос:

https://github.com/Azure-Samples/ms-identity-javascript-angular-spa-dotnetcore-webapi-roles-groups/tree/master/chapter1

Мне удалось успешно использовать этот пример кода для работы с регистрациями приложений AAD. Я не понимаю, зачем нам нужны две отдельные регистрации приложений, одна для интерфейса, а другая для API. Могу ли я просто настроить это для использования одного приложения? Если да, то есть ли недостаток в этой настройке?

Спасибо

Ответ №1:

Вы можете сделать это, если хотите, но в целом это не рекомендуется. На это есть ряд причин, но вот краткий пример: при предоставлении разрешений приложению (либо через разрешения приложения, либо делегированные разрешения) вы должны следовать «принципу наименьших привилегий», т. е. предоставлять приложению ровно столько разрешений, сколько нужно, и не более. Вполне возможно, что клиентскому приложению и веб-API потребуются разные области / разрешения для выполнения необходимой им работы, но использование одной и той же регистрации приложений означает, что вы не сможете разделить области, требуемые для каждого.

Похожий случай может быть, когда вы больше заботитесь о защите вашего веб-API, чем вашего клиентского приложения. Допустим, вы используете сертификаты для своего веб-API, но для вашего клиентского приложения подойдет только клиентский секрет. Опять же, в этом случае наличие отдельных регистраций приложений позволило бы вам настроить каждое из них в соответствии с их потребностями в безопасности.

И последнее, но не менее важное: допустим, у вас есть несколько клиентских приложений (SPA, мобильное, настольное приложение и т.д.) И единый веб-API, все в рамках одной регистрации приложения. Для вашей бизнес-логики, возможно, вам нужно уметь отличать, от какого клиентского приложения поступает запрос. Хотя есть способы достичь этого с помощью регистрации одного приложения, опять же, гораздо проще иметь отдельные регистрации.

Комментарии:

1. спасибо, что нашли время для столь подробного ответа. Вы высказали несколько замечательных замечаний. Я обязательно разделю их в своем проекте.