我是一个认证和授权的新手。当我访问某个网站时,它会将我重定向到一个 URL,该 URL 需要电子邮件和密码才能登录 Microsoft 帐户。如果我通过了正确的凭据,它会将我重定向到我想去的原始页面。
登录网址如下所示:
https://login.microsoftonline.com/{hypothetically-tenant-id}/oauth2/v2.0/authorize?state={
"redirectUrl":"{the-original-url-I-want-to-visit}",
"adminConsentSessionId":null,
"isMFAModeRetry":false
}&client_id={client-id}
&redirect_uri=https://{original-url-domain}/api/auth/azuread/login/code
&response_type=code id_token
&response_mode=form_post
&nonce={nonce}
&scope=openid offline_access
&sso_reload=true
我想问是否有办法编写一个流程,在我的令牌过期/不存在时向 Microsoft 提供凭据,并使用令牌查看目标页面并绕过登录页面?
我检查cookie存储,有一个键值对,如果我使用该键值对并将其放入cookie存储中,那么我就不必再次登录。我猜这是第一次登录后获得的token。
我还尝试以编程方式设置 cookie 存储,并且它有效。当然cookie键值对是我自己事先手动获取的,所以我猜稍后就会过期了。
新手进行身份验证和授权。当我访问一个网站时, 它会将我重定向到一个需要电子邮件和密码才能登录的网址 微软账户
您访问的网站集成了 Azure AD,以便您可以使用 Microsoft 帐户登录您的应用程序。这是身份验证,用于强制登录才能访问网站。而授权则是决定哪些页面可以访问,比如管理员可以访问仪表板,但普通用户无法访问仪表板。这里是使用 Azure AD 的示例,您可以参考这些示例,看看 Azure AD 提供了什么。
编写一个流程,向 Microsoft 提供凭据(如果我的令牌) 过期/不存在,使用token查看目的页面 加上绕过登录页面
您的需求可能已经存在但不完全相同。例如,一家公司使用 Azure 来管理所有用户,那么我们可以使用 Azure AD,这样每个用户都会有一个 [email protected] 帐户,并且该公司可能希望其员工使用他们的 onmicrosoft.com 帐户进行签名在内部网站。这是基于 Microsoft Identity 平台的。
每当用户尝试登录时,网站都会重定向到 Microsoft 登录页面,并在登录成功后重定向回网站。远程身份平台会记住登录状态(云端状态),并将ID令牌返回给网站,让网站应用程序知道用户已经成功登录。然后应用程序创建一个 cookie,它还记住登录状态(网站端状态)。一段时间后,网站端状态可能会过期,如果用户尝试访问需要身份验证的页面,网站应用程序将再次重定向到登录页面,但这次如果云端状态尚未过期,它将绕过登录步骤并再次重定向回应用程序网站以及 id 令牌,以便应用程序将创建一个新的 cookie 来更新网站端状态。如果云端状态也过期了,那么我们就必须输入用户名和密码才能重新登录。
您尝试实现的流程可能不是一个好主意,因为 Azure AD SDK 已经提供了与我上面描述的功能相同的功能。关于Azure AD授权流程,您可以参考本系列文档。这些流程围绕访问令牌,有助于实现允许谁访问某些特定页面。