我有一个多租户应用程序,对于一个单独的本机应用程序,我正在尝试实现NativeClient-Headless-DotNet所描述的类似方法。当我有我的多租户应用程序,然后我在Azure AD中设置Native Client Application,我向mWeb App添加权限时,它按预期工作。出去的请求看起来像这样:
POST https://login.microsoftonline.com/{my tenant id}/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
return-client-request-id: true
x-client-SKU: .NET
x-client-Ver: 2.14.0.0
x-client-CPU: x64
x-client-OS: Microsoft Windows NT 6.2.9200.0
x-client-last-response-time: 239
x-client-last-endpoint: user_realm
Host: login.microsoftonline.com
Content-Length: 173
Expect: 100-continue
resource={my web app uri id}&client_id={my native client app id}&grant_type=password&username={my username}&password={my password}&scope=openid
非常适合这个原型。我试图看看我是否可以逃脱,而无需在Azure AD中注册Native客户端应用程序。要做到这一点,如果我们假设我可以安全地将用户名和密码传递给我的Web应用程序,是否有办法从我的Web应用程序请求某些资源而不是我的Native客户端应用程序将返回类似于上述请求的响应的响应?类似的东西:
POST https://login.microsoftonline.com/{my tenant id}/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
return-client-request-id: true
x-client-SKU: .NET
x-client-Ver: 2.14.0.0
x-client-CPU: x64
x-client-OS: Microsoft Windows NT 6.2.9200.0
x-client-last-response-time: 239
x-client-last-endpoint: user_realm
Host: login.microsoftonline.com
Content-Length: 173
Expect: 100-continue
resource={some resource that requires authentication}&client_id={my web app id}&grant_type=password&username={my username}&password={my password}&scope=openid
Azure AD中可用的任何内容?我可以请求Grap API令牌,但是在访问整个目录时需要client_secret。我正在寻找可能通过传递用户名和密码的特定个人资料。谢谢。
答案 0 :(得分:1)
用户名/密码流仅供本机客户端使用。 AAD没有提供将用户名/密码传递到您赢得的网站并在那里使用它的机制 - 事实上,强烈建议不要让凭证在最直接的路径之外流向验证发生的地方。