Azure App Service其实本身就可以提供一些基础的身份验证功能,对于一些简单的需求,其实不需要由业务代码处理用户的登陆请求,完全交给Azure App Service来做就行了
很久之前其实就可以使用Azure AD或者Google,Facebook这种账号登录到App Service,现在甚至还可以支持一些基于OIDC的identity provider,虽然还是在预览版,不过无疑极大扩展了这项功能的适用范围
身份验证这部分功能在App Service中是有一个独立的中间件负责处理的,和业务代码完全独立,在业务代码中也不会有体现,在请求到达业务代码之前,首先就会经过身份验证中间件进行处理,然后才会到达业务代码
所以,对开发者来说,这部分功能其实是透明的,不管使用的是基于Azure AD的身份验证,还是Google或者其他基于OIDC的方式
我们这次用OKTA来做个测试,首先在OKTA中,我们需要有一个application,这算是标准流程了,想要使用这种identity provider基本上都是要先有个application的
登陆方式这里我们用的是OIDC的
应用类型就是个正常的web应用
接下来需要填写一些关键信息,比如callback地址之类的,callback地址正常其实是要用户自己编写一个页面用于处理用户登陆之后的请求的,但是Azure App Service这部分功能是完全托管的,所以不需要我们自己处理,callback的地址也是要按照固定格式写的必须是<app-url>/.auth/login/<provider-name>/callback
这里为了测试,直接允许组织内所有用户访问
之后就可以拿到这个application对应的ID和secret了,这会用在之后的配置中
后边就是在Azure中的操作了,这部分操作很简单,直接添加一个identity provider
类型就选OIDC的,注意这里会有个metadata的URL,这部分内容其实是固定的,直接在OKTA的页面中找下就行
这里需要配置之前拿到的client id和secret,用来完成oAuth的验证流程,还有一些其他authentication相关的配置
配置完成后访问app service的URL,会被自动重定向到OKTA的登录界面
输入用户名和pw,允许授权之后就可以登录了,非常简单,也不需要写代码