前言
OAuth 2.0是一个关于授权的开放网络标准,它允许第三方应用获取用户数据,是目前最流行的授权机制。微软身份平台支持OAuth 2.0授权码流程,使得客户端应用程序能够获得对受保护资源(如网络API)的授权访问。这一流程在保障用户数据安全的前提下,实现了应用的便捷登录与数据共享。
当用户在一个支持OAuth 2.0的应用上,希望使用微软账号进行登录时,OAuth 2.0授权流程即被触发。该流程涉及多个参与方,包括客户端(请求访问受保护资源的第三方应用)、资源所有者(通常是用户)、授权服务器(负责验证资源所有者的身份并颁发Access Token给客户端的服务器)和资源服务器(存储受保护资源的服务器)。通过这一流程,用户在授权客户端访问其微软账号资源的同时,无需直接向客户端透露自己的用户名和密码,从而确保了用户数据的安全性。
接下来,我们将详细介绍微软登录OAuth 2.0授权流程的具体步骤和注意事项,以帮助开发者更好地理解和实现这一功能。
一、微软登录OAuth 2.0授权流程
1.获取用户登录与授权code
a、用户点击登录按钮,客户端向微软的OAuth 2.0授权服务器发送请求。
b、用户在微软的登录页面上输入其凭据(如用户名和密码)并进行验证。
c、一旦验证成功,用户会被重定向回应用程序,并附带一个授权码(authorization code)。
// 浏览器直接访问链接获取code:
https://login.microsoftonline.com/{YOUR_TENANT_ID}/oauth2/v2.0/authorize
?client_id={YOUR_CLIENT_ID}
&response_type=code
&redirect_uri={YOUR_REDIRECT_URI}
&scope=User.Read Mail.Read
请将{YOUR_TENANT_ID}替换为您的租户ID,{YOUR_CLIENT_ID}替换为您在Azure AD中注册的应用程序的客户端ID,{YOUR_REDIRECT_URI}替换为您的应用程序的重定向URL。
2.获取访问令牌access_token
通过授权码(authorization code)获取访问令牌(access_token)和刷新令牌(refresh_token)
// 接口URL:
https://login.microsoftonline.com/{YOUR_TENANT_ID}/oauth2/v2.0/token
// 通过POST请求并携带以下参数获取access_token,需要以application/x-www-form-urlencoded的格式提供以下参数:
1、client_id:您在Azure AD中注册的应用程序的客户端ID。
2、client_secret:您在Azure AD中注册的应用程序的客户端密钥。
3、code:您从授权过程中获得的授权码。
4、redirect_uri:您的应用程序的重定向URL。
5、grant_type:授权类型,通常为authorization_code。
请将{YOUR_TENANT_ID}替换为您的租户ID。
3.获取用户信息
通过访问令牌(access_token)获取用户信息,可以使用Microsoft Graph API发送GET请求。微软的Graph API会返回一个JSON格式的响应,其中包含用户的详细信息,如用户名、邮箱、头像等。
应用程序可以解析这个响应,并使用其中的用户信息来完成相应的业务逻辑。
// 通过GET请求获取用户信息,在请求头中携带access_token参数:Authorization: Bearer {ACCESS_TOKEN},接口URL:
https://graph.microsoft.com/v1.0/me
请将{ACCESS_TOKEN}替换为您获得的访问令牌。
总结
更多微软登录授权详细流程请阅读其官方文档:https://learn.microsoft.com/zh-cn/graph/auth-v2-user?preserve-view=true&tabs=http