我们的项目中包含以下sceanrio:
- MainWebApp1是位于https://test.com/mainwebapp1的MVC WebApplication
- WebApp2是位于https://test.com/webapp2的MVC WebApplication
- WebApp3是位于https://test.com/webapp3的MVC + Angular5 WebApplication
- WebApp4是位于https://test.com/webapp4的Angular5 WebApplication
- WebAPI2,WebApi3,WebApi4都是托管在https://test.com/WebAPI2上的WebAPI
https://test.com/WebAPI3和https://test.com/WebAPI4
用户登录到配置有Azure AD(TenantId:T1,ClientId:C1)的MainWebApp1。登录MainWebApp1后,MVC视图将显示Web应用程序WebApp2,WebApp3,WebApp4的链接。
- 由于Web应用程序WebApp2 / WebApp3 / WebApp4与
在功能和技术上彼此相同,但在同一租户下,
一旦用户再次提示用户登录到Azure AD
单击任何WebApp2 / WebApp3 / WebApp4 。如果是的话,那很好吗
使用不同的Azure AD配置这些应用程序的想法
ClientId(相同的TenantId)
- 用户登录到WebApp2后,我们将获得一个包含声明的令牌
TenantId,ClientId,UserId
- 要获取数据,WebApp2通过将标头中的令牌(在上述步骤2中接收到)作为身份验证:承载{{Token}}来调用WebApi2。因此,在WebApi2上,如果我们实现OWIN authentication pipeline,则可以在Startup.cs中指定TenantId和ClientId,然后使用API Controller中的[Authorize]属性来验证令牌中是否引用了相同的ClientId。
[Authorize]
public class TodoListController : ApiController
{
但是在这种情况下,外部客户端或其他Web应用程序(例如WebApp3 / 4)也可以访问WebApi2。因此,我们如何配置WebApi2,以便可以通过传递适当的令牌从WebApp2 / WebApp3 / WebApp4或外部客户端调用它。
我们应该实施哪种AzureAD ADAL技术?令牌的授予类型应该是什么?
在Azure门户上是否需要进行其他设置?