我创建了两个简单的应用程序,一个是MVC网站,另一个是MVC API。这些网站使用API中的几种方法。
我已经部署到Azure,“App Services”,网站作为Web App,Api作为Api App。在此之前,我还没有实现任何身份验证,它运行正常。
现在,我希望两种资源都使用身份验证。因此,从Azure门户我为WebApp和ApiApp启用了身份验证。 在WebApp中,我将值设置为: 应用服务验证:开启 未经过身份验证时要执行的操作:使用Microsoft帐户登录 我配置了一个Microsoft帐户
对于Api应用程序,我设置相同的值,但要采取的操作除外,我将其设置为“允许请求(无操作)”。在Api App代码中,我在控制器上设置了[Authorize]属性。
现在,当我转到WebApp时,我会被重定向到我可以登录的Microsoft帐户登录页面,并查看应用程序。这非常有效。 但是,我无法以任何方式将这些凭据传递给我的Api应用程序。是否可以创建(或获取)令牌并将其传递给Api应用程序?所以在Api App中我会自动进行身份验证,从那里我可以获得我需要的用户数据吗?
答案 0 :(得分:1)
您可以在webapi端使用OAuth进行基于承载令牌的身份验证。配置您的web api以发放令牌。在mvc应用程序中进行身份验证后,使用body向api服务器发送请求 - grant_type = password& username = uname& password = pwd。一旦获得令牌,您需要将其存储在cookie /本地存储中,然后在每次向web api发出请求时,您需要添加具有此令牌值的Authorization标头。