zoukankan      html  css  js  c++  java
  • 【Azure Developer】PHP网站使用AAD授权登录的参考示例

    问题描述

    如果有个PHP网站,需要使用AAD授权登录,有没有PHP代码实例 可供参考呢?

    参考代码

    参考一篇博文(Single sign-on with Azure AD in PHP),学习使用SSO的大体思路。如果对PHP很了解,可以参考Github中的Sample代码。

    federation.trustedissuers.issuer=https://accounts.accesscontrol.windows.net/v2/wsfederation
    federation.trustedissuers.thumbprint=3f5dfcdf4b3d0eab9ba49befb3cfd760da9cccf1
    federation.trustedissuers.friendlyname=Awesome Computers
    federation.audienceuris=spn:d184f6dd-d5d6-44c8-9cfa-e2d630dea392
    federation.realm=spn:d184f6dd-d5d6-44c8-9cfa-e2d630dea392@495c4a5e-38b7-49b9-a90f-4c0050b2d7f7
    federation.reply=https://localhost/phpSample/index.php
    /*-----------------------------------------------------------------------
    
        Copyright (c) Microsoft Corporation.  All rights reserved.
    
     
        Copyright 2012 Microsoft Corporation
        All rights reserved.
    
        Licensed under the Apache License, Version 2.0 (the "License");
        you may not use this file except in compliance with the License.
        You may obtain a copy of the License at
          http://www.apache.org/licenses/LICENSE-2.0
    
     THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
     EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR 
     CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
    
     See the Apache Version 2.0 License for specific language governing 
     permissions and limitations under the License.
    
    --------------------------------------------------------------------------- */
    <?php
    require_once (dirname(__FILE__) . '/secureResource.php');
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Index Page</title>
    </head>
    <body>
        <h2>Index Page</h2>
        <h3>Welcome <strong><?php print_r($loginManager->getPrincipal()->getName()); ?></strong>!</h3>
        
        <h4>Claim list:</h4>
        <ul>
    <?php 
        foreach ($loginManager->getClaims() as $claim) {
            print_r('<li>' . $claim->toString() . '</li>');
        }
    ?>
        </ul>
    </body>
    </html>
    /*-----------------------------------------------------------------------
    
        Copyright (c) Microsoft Corporation.  All rights reserved.
    
     
        Copyright 2012 Microsoft Corporation
        All rights reserved.
    
        Licensed under the Apache License, Version 2.0 (the "License");
        you may not use this file except in compliance with the License.
        You may obtain a copy of the License at
          http://www.apache.org/licenses/LICENSE-2.0
    
     THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
     EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR 
     CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
    
     See the Apache Version 2.0 License for specific language governing 
     permissions and limitations under the License.
    
    --------------------------------------------------------------------------- */
    <?php
    // uncomment this to display internal server errors.
    //error_reporting(E_ALL);
    //ini_set('display_errors', 'On');
    ini_set('include_path', ini_get('include_path').';../../libraries/;');
    require_once ('waad-federation/TrustedIssuersRepository.php');
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Login Page</title>
    </head>
    <body>
        <h2>Login Page</h2>    
        <ul>
    <?php 
        $repository = new TrustedIssuersRepository();
        $trustedIssuers = $repository->getTrustedIdentityProviderUrls();
    
        foreach ($trustedIssuers as $trustedIssuer) {
            $returnUrl = $_GET['returnUrl'];
            print_r('<li><a href="' . $trustedIssuer->getLoginUrl($returnUrl) . '">' . $trustedIssuer->displayName . '</a></li>');
        }
    ?>
        </ul>
    </body>
    </html>
    /*-----------------------------------------------------------------------
    
        Copyright (c) Microsoft Corporation.  All rights reserved.
    
     
        Copyright 2012 Microsoft Corporation
        All rights reserved.
    
        Licensed under the Apache License, Version 2.0 (the "License");
        you may not use this file except in compliance with the License.
        You may obtain a copy of the License at
          http://www.apache.org/licenses/LICENSE-2.0
    
     THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
     EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR 
     CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
    
     See the Apache Version 2.0 License for specific language governing 
     permissions and limitations under the License.
    
    --------------------------------------------------------------------------- */
    <?php
    // uncomment this to display internal server errors.
    // error_reporting(E_ALL);
    // ini_set('display_errors', 'On');
    
    ini_set('include_path', ini_get('include_path').';../../libraries/;');
    require_once ('waad-federation/ConfigurableFederatedLoginManager.php');
    
    session_start();
    $token = $_POST['wresult'];
    $loginManager = new ConfigurableFederatedLoginManager();
    
    if (!$loginManager->isAuthenticated()) {
        if (isset ($token)) {
            try {
                $loginManager->authenticate($token);            
            } catch (Exception $e) {
                print_r($e->getMessage());
            }
        } else {
            $returnUrl = "https://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
    
            header('Pragma: no-cache');
            header('Cache-Control: no-cache, must-revalidate');
            header("Location: https://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME']) . "/login.php?returnUrl=" . $returnUrl, true, 302);
            exit();
        }
    }
    ?>
    <?xml version="1.0" encoding="UTF-8"?>
    <issuers>
        <issuer name="awesomecomputers.onmicrosoft.com" displayName="Awesome Computers"
            realm="spn:d184f6dd-d5d6-44c8-9cfa-e2d630dea392@495c4a5e-38b7-49b9-a90f-4c0050b2d7f7" />
        <issuer name="treyresearchinc.onmicrosoft.com" displayName="Trey Research Inc."
            realm="spn:d184f6dd-d5d6-44c8-9cfa-e2d630dea392@13292593-4861-4847-8441-6da6751cfb86" />
    </issuers>

    参考资料

    Single sign-on with Azure AD in PHPhttp://www.lewisroberts.com/2015/09/04/single-sign-on-with-azure-ad-in-php/

    Azure/azure-sdk-for-php-sampleshttps://github.com/Azure/azure-sdk-for-php-samples

    当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

  • 相关阅读:
    SQL Server参数化查询
    MySQL平台数据库备份方案详细说明
    Android 关机弹出菜单
    android 4.1源码下载方法最新实例教程
    教你如何创建类似QQ的android弹出菜单
    三足鼎立已深入人心 移动开发平台前景展望
    Android上的蓝牙通信功能的开发:BluetoothChat例程分析
    Android经典动画案例分析
    Android使用FileObserver对sdcard文件或文件夹监控
    如何提高Android用户体验
  • 原文地址:https://www.cnblogs.com/lulight/p/15479343.html
Copyright © 2011-2022 走看看