之前,我们为使用AD的客户端启用了基于ADFS的主动身份验证。
我们通过以下curl命令实现了主动身份验证:
卷曲https://server.com/adfs/services/trust/13/usernamemixed --data @ request.txt -H“内容类型:application / soap + xml”-详细-o“ output.txt”。
这是我的request.txt文件
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"
xmlns:a="http://www.w3.org/2005/08/addressing"
xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
>
<s:Header>
<a:Action s:mustUnderstand="1">http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue</a:Action>
<a:To s:mustUnderstand="1">https://server.com/adfs/services/trust/13/usernamemixed</a:To>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<u:Timestamp u:Id="_0">
<u:Created>2019-10-09T13:29:54Z</u:Created>
<u:Expires>2019-10-09T13:30:54Z</u:Expires>
</u:Timestamp>
<o:UsernameToken u:Id="uuid-6a13a244-dac6-42c1-84c5-cbb345b0c4c4-1">
<o:Username>' . $user_name . '</o:Username>
<o:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"><![CDATA[' . $password . ']]></o:Password>
</o:UsernameToken>
</o:Security>
</s:Header>
<s:Body>
<trust:RequestSecurityToken xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">
<wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<a:EndpointReference>
<a:Address>https://server.com/adfs/ls</a:Address>
</a:EndpointReference>
</wsp:AppliesTo>
<trust:KeyType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Bearer</trust:KeyType>
<trust:RequestType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue</trust:RequestType>
<trust:TokenType>urn:oasis:names:tc:SAML:2.0:assertion</trust:TokenType>
</trust:RequestSecurityToken>
</s:Body>
</s:Envelope>
现在,我想在Azure AD上类似地实现主动身份验证,并且我想知道等效方法的方法。
有人可以对此亮一下吗?
欢呼
答案 0 :(得分:1)
最相似的流程是OAuth ROPC流程:https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth-ropc。
除非您要迁移旧版应用程序,否则我建议您不要使用它。 相反,如果可能,应使用以下流程之一:
它们的优点是您的应用程序不需要处理密码。它们也与ROPC不兼容的MFA兼容。