cha*_*une 10 php azure oauth-2.0 azure-active-directory
我与一组现有用户一起构建并维护了一个 PHP Web 应用程序。身份验证是应用程序内的用户名密码。
现在需要使用现有的 Azure AD 帐户向大量新用户提供访问权限。客户端希望这些用户能够使用他们的 Azure 身份登录。现有用户将继续按照目前的方式进行身份验证。
我认为这与 Facebook/Google 等 SSO 类似,但我很难在 Microsoft 资源中找到任何这样的示例,或者任何可以实现此功能的库。我描述的用例是有效的,并且可以通过 Azuer AD 身份验证实现吗?
小智 6
注册azure后,您可以参考此代码进行post请求
例如:
<?php
$appid = "xxx";
$tennantid = "xxx";
$secret = "xxx";
$login_url ="https://login.microsoftonline.com/".$tennantid."/oauth2/v2.0/authorize";
session_start ();
$_SESSION['state']=session_id();
echo '<h2><p>You can <a href="?action=login">Log In</a> with Microsoft</p></h2>';
if ($_GET['action'] == 'login'){
$params = array (
'client_id' =>$appid,
'redirect_uri' =>'https://example/',
'response_type' =>'token',
'response_mode' =>'form_post',
'scope' =>'https://graph.microsoft.com/User.Read',
'state' =>$_SESSION['state']);
header ('Location: '.$login_url.'?'.http_build_query ($params));
}
if (array_key_exists ('access_token', $_POST)){
$_SESSION['t'] = $_POST['access_token'];
$t = $_SESSION['t'];
$ch = curl_init ();
curl_setopt ($ch, CURLOPT_HTTPHEADER, array ('Authorization: Bearer '.$t, 'Conent-type: application/json'));
curl_setopt ($ch, CURLOPT_URL, "https://graph.microsoft.com/v1.0/me/");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$rez = json_decode (curl_exec ($ch), 1);
if (array_key_exists ('error', $rez)){
var_dump ($rez['error']);
die();
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
方法1:基本上,要从PHP Web应用程序通过Azure AD访问资源,您可以参考Web应用程序到Web API
\n要将 Azure AD 集成到 PHP Web 应用程序中,我们需要遵循授权代码授予流程步骤来构建多个自定义 HTTP 请求。EG 要通过 OAuth 2.0 协议获取访问令牌,我们应该参考授权码授予流程上的步骤。一般来说,我们会构建2个HTTP请求来获取访问令牌:
\n请查看这个 PHP 测试项目 供您参考
\n方法2:
\n请参考此github代码:https ://github.com/CoasterKaty/PHPAzureADoAuth
\n尝试执行以下步骤
\n2)创建应用程序注册后复制客户端ID和租户ID,将它们粘贴到config.inc中的_OAUTH_SERVER和_OAUTH_CLIENTID中。_ OAUTH_SERVER条目应该是login.microsoftonline.com URL,但将TENANT_ID替换为您的目录(租户)ID
\n\n3)添加新的秘密并选择合适的时间。不要\xe2\x80\x99 忘记您需要在过期之前更新它,因此请在日历中记下。完成后,复制秘密值并将其粘贴到config.inc 中的 _OAUTH_SECRET中
\n4) 之后,能够浏览到您的应用程序并提示登录。第一次登录时,系统会要求您\xe2\x80\x99 授予租户中每个人的权限(假设您具有适当的管理权限)。
\n\n| 归档时间: |
|
| 查看次数: |
17534 次 |
| 最近记录: |