【问题标题】:Where is my database in ASP.NET MVC5 Azure AD Web App template?ASP.NET MVC5 Azure AD Web App 模板中的数据库在哪里?
【发布时间】:2015-09-09 09:58:56
【问题描述】:

问题背景:-

我正在学习如何使用 Azure AD 作为 ASP.NET MVC 5 Web 应用程序的身份验证方法(与使用 Identity 的标准本地身份验证相反)。

在 VS2015 中,我使用了 MVC 5 Web 应用程序的模板,并在“更改身份验证”菜单中选择了“工作和学校帐户”...

我在我的 Azure 帐户中创建了一个域/用户,并在我运行默认应用程序时成功地进行了身份验证。

但是:-

我注意到没有可迁移到 Azure 的本地数据库(我认为这是存储租户/令牌信息所必需的)。此外,Web.config 没有定义默认连接字符串(“个人帐户”模板中有一个)

问题

为什么这个模板没有默认数据库?我错过了什么?

【问题讨论】:

    标签: c# asp.net visual-studio azure azure-active-directory


    【解决方案1】:

    在新模板中删除了使用 Azure AD 进行工作/学校帐户身份验证的数据库依赖项。您表示您曾经看到的体验是旧项目模板中记录的here 的体验。

    旧模板使用 WS-Federation 和 Azure AD 中的 WS-Federation 端点对用户进行身份验证。该数据库用于存储一些 Azure AD 租户信息和用于验证 Azure AD 颁发的 SAML 令牌的证书指纹。如果您有兴趣了解有关此内容的更多信息,我在博客上写了 here

    新模板使用 OWIN 中间件和 OpenID Connect 对用户进行身份验证。 OpenID Connect 基于 OAuth 2.0 构建,因此使用 Azure AD 中的 OAuth 端点。正如您所观察到的,您仍然可以获得工作/学校帐户身份验证。它只是使用与您过去看到的不同的协议、库和令牌格式(JWT 而不是 SAML)来完成的。如果您查看 Startup.Auth.cs,您会看到它的连接位置。

    在这些较新的模板中缺少数据库依赖性只是为了支持工作/学校帐户身份验证,这是一个好事。在此模型中,用于验证令牌的证书指纹是在用户通过身份验证时检索的(通过 WS-Federation 元数据端点),而不是从数据库加载到您的应用程序中。

    如果您想要一个数据库,您当然可以添加一个供您的应用程序使用。但是,幸运的是,验证用户不需要它。

    【讨论】:

    • 谢谢,这很清楚。我想我需要更多地了解 OpenID Connect,我是否需要对 JWT 令牌做任何事情以及我应该如何处理索赔......
    • 顺便说一句,我今天刚刚注意到的是,如果您在模板中选择了使用 Azure AD Graph 的选项,那么在这种情况下会添加数据库依赖项。不太清楚为什么,但我想提一下,以防万一你在未来的项目中看到这一点。
    • 跟进我之前的评论,如果您选择访问 Azure AD 图表的选项,添加它的原因是因为它提供了 ADAL 令牌缓存实现。此实现使用数据库缓存令牌,避免在调用 AcquireToken 期间不必要地访问 Azure AD。同样,这不会改变您的问题或我的答案,但如果您以后检查这些选项,很高兴知道。
    • 谢谢 Rick,我会把 ADAL 放在我的阅读清单上 :)
    • 实际上,我在模板中找不到使用 Azure AD Graph 的选项...我应该使用哪个模板?
    猜你喜欢
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    相关资源
    最近更新 更多