Spl*_*nes 7 authentication reverse-engineering ms-office single-sign-on office365
给定公司电子邮件和相应的密码,我需要以编程方式登录login.microsoftonline.com并访问 Office 365 仪表板 ( office.com)。该图显示了我尝试找出相应端点的用户流程。
这就是我发现的有关端点的名称和方式的信息。请注意,如果您不使用公司帐户,端点可能会有所不同。
假设:
login.microsoftonline.com按照重定向进行操作。生成的 HTML 包含一个封装在//<![CDATA[和中的配置 json 对象//]]>。搜索"sFT":并复制该值。搜索"sCtx":并复制该值。搜索"canary":并复制该值。搜索"sessionId":并复制该值。
https://login.microsoftonline.com/common/GetCredentialType?mkt=en-US我认为这个终点不是必需的。我仍然把它放在这里。
发送 JSON 正文如下:
{
"username": "<your-company-email>",
"flowToken": "<your-sFT-token>"
}
Run Code Online (Sandbox Code Playgroud)
https://login.microsoftonline.com/common/login作为正文中的表单数据发送:
login:<your-company-email>
passwd:<your-password>
flowToken:<your-sFT-token>
type:11
ctx:<your-sCtx-token>
canary:<your-canary-token>
hpgrequestid:<your-session-id>
Run Code Online (Sandbox Code Playgroud)
https://login.microsoftonline.com/kmsi“kmsi”代表“让我保持登录状态”。如果您不使用公司邮件登录,则这可能是不会被调用的端点。
作为正文中的表单数据发送:
LoginOptions:3
type:28
ctx:<your-sCtx-token>
flowToken:<your-sFT-token>
canary:<your-canary-token>
hpgrequestid:<your-session-id>
Run Code Online (Sandbox Code Playgroud)
按照此处显示的顺序调用这些端点,我能够成功检索这些 cookie:
来自login.microsoftonline.com(10 块饼干):
来自office.com(1 块饼干):
来自www.office.com(2 块饼干):
https://www.office.com/landing作为正文中的表单数据发送。???表明我不知道这些数据来自哪里。
code:<a code token ???>
id_token:<an id token ???>
state:<a state token ???>
session_state:<a session state token ???>
Run Code Online (Sandbox Code Playgroud)
该端点似乎至关重要,因为它返回以下 cookie:
https://www.office.com/在上一个请求期间设置的 cookie 将在此处的请求标头中发送。这就是为什么这office.com/landing似乎至关重要。但是,我无法弄清楚如何为该主体构造表单数据,例如code,id_token等等。
也许相关问题?请注意,我在堆栈溢出上 看到了这个问题,但我发现它没有用,并且认为它与我的问题无关。
为什么我需要这一切?
主要目标是从另一个工具(SSO)自动登录用户。给出了电子邮件和密码。我的方法是在服务器端以编程方式使用这些端点登录,收集后续登录所需的 cookie,然后将它们发送到客户端。客户端使用这些 cookie 即可office.com立即访问和查看仪表板,而无需登录。
更好的方法?请注意,我有权访问管理中心 (Microsoft) 和 Azure Direct。如果您知道此解决方案的更简单方法,我很高兴了解它。我读过的大多数文章都涉及在登录 Microsoft 的情况下如何使用 Azure 登录另一个服务。但我需要相反的情况:登录到某些服务并自动访问 Microsoft Office 365 仪表板。
你想做的事情是完全错误的 - 为什么要对前端应用程序进行逆向工程,有一天却发现一切都改变了?
有官方的 REST API 到 MS Outlook Online,并通过 Azure AD 进行身份验证机制 - 正是为了让第三方应用程序能够与 MS Online 应用程序一起使用。
尝试检查一下:
https://learn.microsoft.com/en-us/graph/overview-major-services
和这个:
https://learn.microsoft.com/en-us/graph/azuread-identity-access-management-concept-overview
| 归档时间: |
|
| 查看次数: |
6610 次 |
| 最近记录: |