category
Microsoft身份平台支持不同类型的现代应用程序体系结构的身份验证。所有体系结构都基于行业标准协议OAuth 2.0和OpenID Connect。通过使用Microsoft身份验证平台的身份验证库,应用程序可以验证身份并获取令牌以访问受保护的API。
本文描述了身份验证流及其使用的应用程序场景。
应用程序类别(Application categories)
安全令牌可以从几种类型的应用程序中获取,包括:
- Web应用程序
- 移动应用程序
- 桌面应用
- Web API
代币也可以由运行在没有浏览器或运行在物联网(IoT)上的设备上的应用程序获取。
以下各节介绍了应用程序的类别。
受保护的资源与客户端应用程序
身份验证场景涉及两个活动:
- 获取受保护web API的安全令牌:我们建议您使用Microsoft开发并支持的Microsoft身份验证库(MSAL)。
- 保护web API或web应用程序:保护这些资源的一个挑战是验证安全令牌。在某些平台上,微软提供中间件库。
有用户或无用户
- 大多数身份验证场景都代表已登录用户获取令牌。
有用户的场景
不过,也有守护程序应用程序。在这些场景中,应用程序在没有用户的情况下代表自己获取令牌。
具有守护程序应用程序的场景
单页、公共客户端和机密客户端应用程序
安全令牌可以由多种类型的应用程序获取。这些应用程序往往分为以下三类。每个都与不同的库和对象一起使用。
- 单页应用程序:也称为SPAs,是指通过浏览器中运行的JavaScript或TypeScript应用程序获取令牌的网络应用程序。许多现代应用程序的前端都有一个主要用JavaScript编写的单页应用程序。该应用程序通常使用Angular、React或Vue等框架。MSAL.js是唯一一个支持单页应用程序的Microsoft身份验证库。
- 公共客户端应用程序:此类别中的应用程序,与以下类型一样,始终登录用户:
- 代表登录用户调用web API的桌面应用程序
- 移动应用程序
- 在没有浏览器的设备上运行的应用程序,比如在物联网上运行的
- 机密客户端应用程序:此类应用程序包括:
- 调用Web API的Web应用程序
- 调用Web API的Web API
- 守护程序应用程序,即使是作为控制台服务(如Linux守护程序或Windows服务)实现
登录受众
可用的身份验证流因登录受众而异。有些流量仅适用于工作或学校账户。其他帐户可用于工作或学校帐户以及个人Microsoft帐户。
有关详细信息,请参阅支持的帐户类型。
应用程序类型(Application types)
Microsoft身份平台支持以下应用程序体系结构的身份验证:
- 单页应用程序
- Web应用程序
- Web API
- 移动应用程序
- 本机应用程序
- 守护应用程序
- 服务器端应用程序
应用程序使用不同的身份验证流来登录用户并获取令牌以调用受保护的API。
单页应用程序
许多现代web应用程序都是作为客户端单页应用程序构建的。这些应用程序使用JavaScript或Angular、Vue和React等框架。这些应用程序在web浏览器中运行。
单页应用程序在身份验证特性方面与传统的服务器端web应用程序不同。通过使用Microsoft身份平台,单页应用程序可以登录用户并获得访问后端服务或web API的令牌。Microsoft身份平台为JavaScript应用程序提供两种授权类型:
MSAL.js(2.x)MSAL.js(1.x)
单页应用程序身份验证单页应用软件隐式
登录用户的Web应用程序
登录用户的web应用程序
要帮助保护登录用户的web应用程序,请执行以下操作:
- 如果你在中发展。NET,则使用ASP。NET或ASP。NET核心与ASP。NET OpenID Connect中间件。保护资源包括验证安全令牌,这是由的IdentityModel扩展完成的。NET而不是MSAL库。
- 如果在Node.js中进行开发,则使用MSAL Node。
有关详细信息,请参阅登录用户的Web应用程序。
登录用户并代表用户调用Web API的Web应用程序
一个调用web API的web应用程序
要代表用户从web应用程序调用web API,请使用授权代码流并将获取的令牌存储在令牌缓存中。需要时,MSAL会刷新令牌,控制器会静默地从缓存中获取令牌。
有关更多信息,请参阅调用Web API的Web应用程序。
代表登录用户调用web API的桌面应用程序
对于桌面应用程序调用登录用户的web API,请使用MSAL的交互式令牌获取方法。通过这些交互式方法,您可以控制登录UI体验。MSAL使用web浏览器进行此交互。
桌面应用程序调用web API
在加入Windows域或Microsoft Entra ID的计算机上,Windows托管的应用程序还有另一种可能性。这些应用程序可以通过使用集成的Windows身份验证以静默方式获取令牌。
在加入Windows域或Microsoft Entra ID的计算机上,Windows托管的应用程序还有另一种可能性。这些应用程序可以通过使用集成的Windows身份验证以静默方式获取令牌。
在没有浏览器的设备上运行的应用程序仍然可以代表用户调用API。若要进行身份验证,用户必须在另一个具有web浏览器的设备上登录。这种情况要求您使用设备代码流。
设备代码流
尽管我们不建议您使用它,但用户名/密码流在公共客户端应用程序中是可用的。在某些场景(如DevOps)中仍然需要此流程。
使用用户名/密码流会限制您的应用程序。例如,应用程序无法登录需要使用多因素身份验证或Microsoft Entra ID中的条件访问工具的用户。您的应用程序也无法从单次登录中获益。使用用户名/密码流进行身份验证违背了现代身份验证的原则,仅出于遗留原因才提供身份验证。
在桌面应用程序中,如果希望令牌缓存保持不变,可以自定义令牌缓存序列化。通过实现双令牌缓存序列化,可以使用向后兼容和向前兼容的令牌缓存。
有关更多信息,请参阅调用web API的桌面应用程序。
代表交互式用户调用web API的移动应用程序
与桌面应用程序类似,移动应用程序调用MSAL的交互式令牌获取方法来获取用于调用web API的令牌。
移动应用程序调用web API
默认情况下,MSAL iOS和MSAL Android使用系统web浏览器。但是,您可以指示他们使用嵌入式web视图。有一些特定功能取决于移动平台:通用Windows平台(UWP)、iOS或Android。
某些场景,如涉及与设备ID或设备注册相关的条件访问的场景,需要在设备上安装代理。代理的例子有安卓系统上的微软公司门户和安卓和iOS系统上的Microsoft Authenticator。MSAL现在可以与经纪人互动。有关经纪人的更多信息,请参阅在Android和iOS上利用经纪人。
有关更多信息,请参阅调用web API的移动应用程序。
笔记
一个使用MSAL的移动应用程序。iOS,MSAL。Android或MSAL。NET可以应用应用应用程序保护策略。例如,这些策略可能会阻止用户复制受保护的文本。移动应用程序由Intune管理,Intune将其识别为托管应用程序。有关详细信息,请参阅Microsoft Intune App SDK概述。
Intune App SDK独立于MSAL库,并单独与Microsoft Entra ID交互。
受保护的web API
您可以使用Microsoft身份平台端点来保护web服务,如应用程序的RESTful API。通过访问令牌调用受保护的web API。该令牌有助于保护API的数据安全并验证传入请求。web API的调用方在HTTP请求的授权头中附加访问令牌。
如果你想保护你的ASP。NET或ASP。NET核心web API,验证访问令牌。对于此验证,您可以使用ASP。NET JWT中间件。验证由的IdentityModel扩展完成。NET库而不是MSAL。NET。
有关更多信息,请参阅受保护的web API。
代表用户调用另一个Web API的Web API
为了让您的受保护web API代表用户调用另一个web API,您的应用程序需要获取下游web API的令牌。这种呼叫有时被称为服务对服务呼叫。调用其他Web API的Web API需要提供自定义缓存序列化。
web API调用另一个web API
有关更多信息,请参阅调用Web API的Web API。
以守护进程的名称调用web API的守护进程应用程序
具有长时间运行的进程或在没有用户交互的情况下运行的应用程序也需要一种访问安全web API的方法。这样的应用程序可以通过使用应用程序的身份进行身份验证并获取令牌。该应用程序通过使用客户端机密或证书来证明其身份。
您可以编写这样的守护程序应用程序,通过使用MSAL中的客户端凭据获取方法为调用应用程序获取令牌。这些方法需要一个客户端机密,您可以将该机密添加到Microsoft Entra ID中的应用程序注册中。然后,应用程序将与调用的守护进程共享该机密。此类机密的示例包括应用程序密码、证书断言和客户端断言。
由其他应用程序和API调用的守护程序应用程序
有关更多信息,请参阅调用web API的守护程序应用程序。
场景和支持的身份验证流
您可以使用身份验证流来实现请求令牌的应用程序场景。应用程序场景和身份验证流之间没有一对一的映射。
涉及获取令牌的场景也映射到OAuth 2.0身份验证流。有关更多信息,请参阅Microsoft身份平台上的OAuth 2.0和OpenID Connect协议。
Scenario | Detailed scenario walk-through | OAuth 2.0 flow and grant | Audience |
---|---|---|---|
Single-page app | Authorization code with PKCE | Work or school accounts, personal accounts, and Azure Active Directory B2C (Azure AD B2C) | |
Single-page app | Implicit | Work or school accounts, personal accounts, and Azure Active Directory B2C (Azure AD B2C) | |
Web app that signs in users | Authorization code | Work or school accounts, personal accounts, and Azure AD B2C | |
Web app that calls web APIs | Authorization code | Work or school accounts, personal accounts, and Azure AD B2C | |
Desktop app that calls web APIs | Interactive by using authorization code with PKCE | Work or school accounts, personal accounts, and Azure AD B2C | |
Integrated Windows authentication | Work or school accounts | ||
Resource owner password | Work or school accounts and Azure AD B2C | ||
Browserless app | Device code | Work or school accounts, personal accounts, but not Azure AD B2C | |
Mobile app that calls web APIs | Interactive by using authorization code with PKCE | Work or school accounts, personal accounts, and Azure AD B2C | |
Resource owner password | Work or school accounts and Azure AD B2C | ||
Daemon app that calls web APIs | Client credentials | App-only permissions that have no user and are used only in Microsoft Entra organizations | |
Web API that calls web APIs | On-behalf-of | Work or school accounts and personal accounts |
场景和支持的平台和语言
Microsoft身份验证库支持多个平台:
- .NET
- .NET Framework
- Java
- JavaScript
- macOS
- Native Android
- Native iOS
- Node.js
- Python
- Windows 10/UWP
- Xamarin.iOS
- Xamarin.Android
您还可以使用各种语言来构建应用程序。
在下表的Windows列中,每次。NET中提到的。NET框架也是可能的。为了避免弄乱桌子,省略了后者。
Scenario | Windows | Linux | Mac | iOS | Android |
---|---|---|---|---|---|
Single-page app |
|
|
|
MSAL.js |
|
Single-page app |
|
|
|
MSAL.js |
|
Web app that signs in users |
|
|
|
||
Web app that calls web APIs |
|
|
|
||
Desktop app that calls web APIs |
MSAL.NET |
MSAL.NET |
MSAL.NET |
||
Mobile app that calls web APIs |
MSAL.NET MSAL.NET |
MSAL.objc |
MSAL.Android |
||
Daemon app |
MSAL.NET |
MSAL.NET |
MSAL.NET |
||
Web API that calls web APIs |
|
|
|
有关详细信息,请参阅Microsoft身份验证平台库。
接下来的步骤
有关身份验证的更多信息,请参阅:
- 登录 发表评论
- 10 次浏览
Tags
最新内容
- 2 days 4 hours ago
- 2 days 5 hours ago
- 2 days 5 hours ago
- 4 days 21 hours ago
- 5 days 4 hours ago
- 5 days 5 hours ago
- 5 days 5 hours ago
- 5 days 5 hours ago
- 1 week 2 days ago
- 1 week 2 days ago