让用户自助注册 MSO 365 账户的实现

mso3651.png

前言

说到 Office 365 自助注册,首先想到的便是教育版。没错,一般通过教育验证的全局,其域下绑定的所有域名都可以实现通过域名邮箱注册 A1 订阅,但是这么做有几个弊端:需要其它邮件服务商;注册的账户无法使用 Outlook。同时,A1P 只能通过初始教育域的邮箱验证,和 A1 不一样,自己绑定的其它域名并没有自助注册权限。
而对于企业版用户来说,微软官方没有提供自助注册渠道。因为对于正规企业用户来说,账号由管理员分配,自助注册没有必要。那么我为什么会有这个想法呢?平时搞活动偶尔也会赠送号子,自己建嫌麻烦,就想整一个自助注册,而我的订阅不止 A1,教育自助注册并不能满足我的需求,于是着手尝试,便有了这篇文章。

渠道

想要写入自动程序,鼠标操作自然不行,而命令行操作,据我所知只有 Powershell 的 MSOnline 模块。(其实是相关的 Web API 不会用,我太菜了,如果有大佬有相关的 PHP 项目,欢迎告知)

关于此模块的具体使用,微软官方文档写的已经非常详细了,这里就不讲了,感兴趣的可以查看这篇文章:https://docs.microsoft.com/zh-cn/office365/enterprise/powershell/manage-office-365-with-office-365-powershell

使用

但是在使用中又发现了一个问题,此模块登录管理员账户时,会弹出登录窗口,而不是通过命令行登录。求助万能 Google,找到了这篇文章,具体解释请看原文,我这里只贴代码:

$AdminUser = "管理员账号"
$AdminPwd = "管理员密码"
$SecureString = ConvertTo-SecureString -AsPlainText "${AdminPwd}" -Force
$MySecureCreds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ${AdminUser},${SecureString}
Connect-MsolService -Credential $MySecureCreds

执行后便已登录管理员账户,后面的操作就简单了,直接使用 New-MsolUser 命令即可创建账号。当然账号信息是读取于指定的调用参数的,具体可以看文末的源码。

调用

要让用户可以进行信息交互,那么需要一个 Web 程序,因为我只用过一点 PHP,所以就用 PHP 来实现了。(我一个拉电线的干嘛要写这种东西? :huaji12:

在 DIYgay 的群里问了句 PHP 怎么调用 .ps1 脚本,得到了这个:

echo Shell_Exec ('powershell.exe -executionpolicy bypass -NoProfile -File "xx.ps1"');

用上,能跑,OJBK。

完善

后面的事情基本上就是前端页面和后端验证了,与本文核心没啥关系,这里就不再多讲。具体可参考文末的源码。

环境

我这里用的测试环境是:
Windows 10 Pro 1709: IIS 10 + PHP 7.2.8
此外还有 Microsoft Online Services Sign-In Assistant,以及 Powershell 的 MS Online 模块。

地址

项目地址: https://github.com/xb2016/New-Mso-User
开源版本只有直接注册单种订阅的功能,闭源版本暂不打算以任何形式发布。项目不接受任何提问,代码仅供参考。我知道自己的代码很烂,大佬勿喷。

DEMO: https://mso-test.fczbl.vip
自用版DEMO: https://mso.fczbl.vip
测试用兑换码:VK7JG-NPHTM-C97JM-9MPGT-3V66T (已归0)
可兑换 5 次 A1 订阅,这订阅很常见,没需要的就不要用了。

测试用活动代码:PKLHM-T9FRJ-VRR3W-PDKJ2-5BVJV (已归0)
可兑换 20 次 E3 订阅,有需求的可取,禁止转发,禁止注册多个账号,禁止使用特殊意义的前缀 (如 root 等) ,一经发现将全部回收。
点名批评:
mso3652.png

点赞
  1. 援军说道:
    Google Chrome Windows 10

    Orz 我前两天才注册了一年开发者试用……残念

  2. 不负卿的伤说道:

    tql~NB!

  3. sm说道:
    Google Chrome Windows 10

    感谢无私分享!b( ̄▽ ̄)d

当前页面评论已关闭。