当我在我的应用程序中使用ROPC(资源所有者密码凭据)流程让用户登录我的应用程序时,为什么我在AAD中看不到任何登录日志呢?
ROPC在OAuth2协议中定义:https://tools.ietf.org/html/rfc6749#section-1.3.3,它不包含在OpenID Connect中。它只是喜欢OAuth2中的其他流程,它们旨在保护API资源,而不是对用户进行身份验证。
ROPC in AAD的行为:
对于ROPC流程,用户在客户端应用程序端输入他/她的AAD用户名和密码。然后客户端将用户的凭证发送给AAD。它显示如下图:
此行为可能会导致主要风险:客户端可能会存储并上载用户的AAD凭据并将其用于其他事项。它可以作为网络钓鱼应用程序来获取用户的AAD凭证。
通常,在基于声明的身份验证中,客户端应该只获取由受信任的IDP颁发的用户属性(例如,OIDC id_token声明,SAML令牌)以识别用户。客户端不应获取其他身份提供商的用户凭据。
为什么AAD仍然支持它?
我们可以看到许多客户希望使用ROPC流来委派用户权限来自动运行作业。我们的一些客户使用ROPC来获得他们自己的定制登录体验。从微软方面来看,AAD支持ROPC流程,因为我们可以真正理解它在某些特殊情况下的必要性。
那么,我们可以在哪种应用程序中使用ROPC?
我们怎样才能避免被提示AAD登录的第三方应用程序钓鱼?
总的来说,通过ROPC流程的用户登录可能是客户端的登录事件,但它不是AAD的登录事件,因为用户未在AAD中登录。