【发布时间】:2017-02-19 02:23:21
【问题描述】:
在通过 Web 应用程序和 API 拥有 Azure AD 之前 -
用户在应用程序表单上输入 id 和密码 -> 用户登录(Asp.net 身份) -> 使用相同的凭据,在 WebAPI 处生成令牌(grant_type=password)-> 将此令牌存储为 cookie 以供以后使用开。
现在使用 Azure AD -
我有一个场景,我必须使用 Azure AD 对用户进行身份验证。 Azure 上的 webapi 传递包含登录用户信息的 JWT。从这些信息中,我提取用户电子邮件并强制我的 Web 应用程序登录用户(Asp.net 身份)。
Web App 调用 WebAPI 来获取令牌,因为我无法传递密码,所以我的令牌调用更改为 (grant_type=client_credentials)。但是,我丢失了登录到 Web API 的个人用户的信息。如果我检查 context.user 它指向唯一的客户端 ID,而不是任何用户。
我知道这很麻烦,但要求是使用相同的应用程序进行 Azure AD 身份验证以及本地表单身份验证。请建议是否有更简单的方法来实现这一点。
编辑:我正在使用 Owin oAuth
我对表单身份验证和 Azure AD 使用相同的应用程序。但是最近不得不在 web api 级别添加日志机制,该机制适用于使用用户 ID/密码进行日志记录的本地应用程序。但是,如果 webapi 使用客户端凭据发出令牌,它就不起作用。我尝试在验证客户端 ID(在 ValidateClientAuthentication 中)并登录用户时将用户名作为参数传递。但是 webapi 无法保留此用户信息。
【问题讨论】:
-
如果我知道您使用的协议和技术会有所帮助。 OpenIdConnect,OAuth? Katana / Asp.net core 1.0 / 等等?
标签: asp.net asp.net-mvc azure asp.net-web-api azure-active-directory