Azure上的Java:云原生身份验证

API通常需要识别其调用方。它可以是调用API的Web应用程序,也可以是调用API的另一个API。识别API的调用者也称为身份验证。建立自己的身份验证框架可能很棘手。值得庆幸的是,不必建立自己的身份验证框架。已经有可用的解决方案。AzureActiveDirectory(AzureAD),Microsoft身份验证库(MSAL),可在各种平台上工作以处理令牌和身份验证。

AzureAD为用户提供了一种使用组织提供的预先存在的凭据登录应用程序的方法,而不是为每个应用程序进行新的登录。使用AzureAD使您的应用程序摆脱了与用户维护相关的许多任务,例如登录和密码重置。OAuth流对用户进行身份验证,然后将用户暂时转到另一个页面进行登录。登录后,该页面将访问令牌回传给应用程序。应用程序可以使用访问令牌来检索有关当前用户的更多信息。

创建一个租户

若要开始使用AzureAD,您需要有权访问AzureAD租户。租户代表一个组织。您可能已经为您的帐户设置了一个租户。要进行检查,请登录到Azure门户并在右上角查找。如果您的帐户是为租户设置的,它将显示在您的用户名下方。

如果您还没有AzureAD租户,则可以创建一个。在Azure门户中,选择“AzureActiveDirectory”。从顶部的菜单中,选择“创建租户”。

选择“AzureActiveDirectory”作为租户类型,然后单击“下一步”。填写贵组织的信息,然后继续创建承租人。

一旦有了租户,就必须将应用程序注册为AzureAD的客户端。在门户中,选择“AzureActiveDirectory”。在“管理”菜单下,选择“应用程序注册”,然后单击+新注册。

为用户可以识别的应用程序提供一个名称,并确保您已从“支持的帐户类型”选项中选择了租户。单击注册以创建您的租户。

将其添加到应用程序

现在,您已经设置了一个租户,MicrosoftJava身份验证库(MSAL4J)将管理身份验证。通过将依赖项声明添加到项目的Maven存储库中,可以将MSAL4J添加到项目中。添加后,可通过com.microsoft.azure.msal4j名称空间使用库的类。

<dependency>
 <groupId>com.microsoft.azure</groupId>
 <artifactId>msal4j</artifactId>
 <version>1.9.1</version>
</dependency>12345复制代码类型:[java]

MSAL4J支持不同的身份验证方案。两种常见方案是:

用户必须通过应用程序进行身份验证。

服务必须通过应用程序进行身份验证。

当用户必须进行身份验证时,可以将OAuth用于方案。OAuth是一种开放标准,使一个网站或服务可以在不共享用户凭据的情况下对另一个网站或服务执行身份验证。该应用程序将用户转发到登录页面,然后用户使用其帐户凭据登录。身份验证完成后,页面会将用户发送回应用程序,并为应用程序提供用户的身份验证令牌。该应用程序使用身份验证令牌来检索访问令牌。MSAL4J简化了令牌的检索。在我们的应用程序中,添加以下代码以检索访问令牌。

//ConfidentialClientApplication app;String authCode = authorizationCode.getValue();
AuthorizationCodeParameters parameters = AuthorizationCodeParameters.builder(
  authCode,  new URI(currentUri)).
  build();
IAuthenticationResult result  = app.acquireToken(parameters).get();
SessionManagementHelper.storeTokenCacheInSession(httpServletRequest,
app.tokenCache().serialize());123456789复制代码类型:[java]

对于需要身份验证的Web呼叫,将访问令牌添加到该呼叫的标题中。AzureAD还提供了一个终结点,当使用访问令牌调用该终结点时,该终结点可在JSON对象中提供有关用户的信息。

HttpURLConnection connection = (HttpURLConnection) MSGraphEndpoint;
 connection.setRequestProperty("Authorization", "Bearer " + accessToken);
 connection.setRequestProperty("Accept", "application/json");
 String response = HttpClientHelper.getResponseStringFromConn(connection); int responseCode = conn.getResponseCode(); if(responseCode != HttpURLConnection.HTTP_OK) {   throw new IOException(response);
 }
 JSONObject userInformation  = HttpClientHelper.processResponse(responseCode,
 response);1234567891011复制代码类型:[java]

尝试自己运行该应用程序。现在,当您运行该应用程序时,它将检查用户是否登录。如果用户未登录,则用户会看到指向登录页面的链接。用户登录后,页面将显示一条消息,表明用户已成功登录并显示基本信息。

结论

Azure提供了其他功能,可用于丰富应用程序的功能。在本系列的下一部分中,我们将介绍Azure认知服务以及如何使用现有的云原生服务

(0)

相关推荐

  • token是什么意思?

    在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思.一般作为邀请.登录系统使用. token是计算机术语:令牌,令牌是一种能够控制站点占有媒体的特殊帧,以区别数据帧及其他控制帧.toke ...

  • SQLServer之服务器连接

    目录 SQL Server Management Studio连接 CMD命令行窗口连接 通用数据连接文件连接 SQL Server Management Studio连接 定义 SQL Server ...

  • 短信验证码的背后

    引:短信(SMS)验证码已经被各种各样的应用作为双重认证的主要手段之一,为什么还要将生物特征识别作为作为双重认证的趋势之一呢?短信验证码是否是安全的呢?如果不安全的话,背后的机制又是什么呢?本文编译自 ...

  • Azure上的Java:监视和扩展容器化的应用程序

    了解应用程序的运行状况至关重要.如果您的服务不可用,则可能会降低生产力并延误其他流程.您可以通过多种方式跟踪应用程序的可用性.AzureMonitor提供了一种收集和分析有关应用程序性能和事件的信息的 ...

  • windows 中 vpn连接提示, 虚拟专用网络 由于RAS/虚拟专用网络,服务器上配置的某个策略,服务器用于验证用户名和密码的身份验证方法可能与连接配置文件中的身份证验证方法不匹配

    windows 虚拟专用网络 由于RAS/虚拟专用网络,服务器上配置的某个策略,服务器用于验证用户名和密码的身份验证方法可能与连接配置文件中的身份证验证方法不匹配 打开网络 更换网络适配器 选项 右键 ...

  • AI原生云时代,上云就上百度智能云

    相比于云和大数据,人工智能对计算力的需求几乎是无止境的,是指数级的增长.   智能算力需求爆发式增长的背后,是人工智能技术与云.大数据.物联网等技术融合,以及推动的各行各业AI化需求的诞生.在技术融合 ...

  • 云原生数据中台技术与趋势解读

    数据中台发展至今,大体经历了 4 个重要阶段:数据库 - 数据仓库 - 大数据平台 - 数据中台.每次新的变革,都是为了解决上一阶段存在的问题. 当前,走向云原生成为数据中台的必然和必须. 云原生从何 ...

  • 乘风破浪,.Net Core遇见Dapr,为云原生而生的分布式应用运行时

    TaylorShi dotNET跨平台 昨天 Dapr是一个由微软主导的云原生开源项目,国内云计算巨头阿里云也积极参与其中,2019年10月首次发布,到今年2月正式发布V1.0版本.在不到一年半的时间 ...

  • (40条消息) 云原生的 WebAssembly 能取代 Docker 吗?

    WebAssembly 是一个可移植.体积小.加载快并且兼容 Web 的全新格式.由于 WebAssembly 具有很高的安全性,可移植性,效率和轻量级功能,因此它是应用程序安全沙箱方案的理想选择.现 ...

  • 为官之道,上官者云

    每一个有才有貌的人 顾秋水的NO.412篇原创 天冷了,请添衣! By :顾秋水 ▲ 每天一篇原创,顾秋水在异国与您说晚安!  1   上官云是日月神教的三朝元老,从任我行倒台,东方不败上位,再到任我 ...

  • 云原生/云计算发展白皮书(附下载)

    随着云计算发展成熟和企业需求推动,云原生技术和理念得到广泛接受,迎来快速发展.发展如火如荼的同时,云原生也面临不少挑战.譬如,传统行业对云原生价值认知模糊,企业云原生技术水平参差不齐,业内对云原生的定 ...

  • 云原生系列2 部署你的第一个k8s应用

    云原生的概念和理论体系非常的完备,but talk is cheap , show me the code ! 但是作为一名程序员,能动手的咱绝对不多BB,虽然talk并不cheap , 能跟不同层次 ...