dragosgaftoneanu/okta-hooks-php

用于在PHP应用程序中集成Okta Hooks功能的SDK。

2.2 2021-03-20 13:22 UTC

This package is auto-updated.

Last update: 2024-09-20 20:47:26 UTC


README

此存储库包含Okta Hooks PHP库的源代码,可用于在您的PHP应用程序中集成新的Okta Hooks功能。

⚠️ 免责声明:这不是官方产品,不符合Okta支持资格。

安装

您可以通过Composer运行以下命令来安装此库

composer require dragosgaftoneanu/okta-hooks-php

需求

目录

事件钩子

可用方法

以下是实现类以成功执行钩子的方法。

getRaw()

此方法返回Okta作为数组发送的完整请求。

oneTimeVerification()

此方法检查请求中的X-Okta-Verification-Challenge头,并回复验证JSON以完成Okta的验证步骤。

display()

此方法显示对来自Okta的请求的最终响应。

示例

以下是一个验证事件钩子的示例脚本。

use Okta\Hooks\EventHook;

try{
        $hook = new EventHook();
        $hook->oneTimeVerification();
        echo $hook->display();
}catch (Exception $e){
        echo $e->getMessage();
}

库将返回的答案将类似于以下内容。

{
    "verification": "T8tTyt5x9WobwSh0np41HlSF6lwl9elP0-cpcmNU"
}

令牌内联钩子

可用方法

以下是实现类以成功执行钩子的方法。

getRaw()

此方法返回Okta作为数组发送的完整请求。

addAccessTokenClaim($name, $value)

此方法告诉Okta在返回的访问令牌中添加一个断言。

modifyAccessTokenClaim($name, $value)

此方法指示Okta修改即将返回的访问令牌中的声明,并赋予新值。

removeAccessTokenClaim($name)

此方法指示Okta删除即将返回的访问令牌中的声明。

modifyAccessTokenLifetime($value)

此方法指示Okta修改访问令牌的有效期。令牌的有效期至少为5分钟(300秒),最长为24小时(86400秒)。

addIDTokenClaim($name, $value)

此方法指示Okta在即将返回的ID令牌中添加一个声明。

modifyIDTokenClaim($name, $value)

此方法指示Okta修改即将返回的ID令牌中的声明,并赋予新值。

removeIDTokenClaim($name)

此方法指示Okta删除即将返回的ID令牌中的声明。

modifyIDTokenLifetime($value)

此方法指示Okta修改ID令牌的有效期。令牌的有效期至少为5分钟(300秒),最长为24小时(86400秒)。

display()

此方法显示对来自Okta的请求的最终响应。

示例

以下是一个示例脚本,用于在ID令牌中添加新的声明,将ID令牌的有效期设置为1天,并更改访问令牌的受众。

use Okta\Hooks\TokenInlineHook;

try{
	$hook = new TokenInlineHook();
	$hook->modifyIDTokenLifetime(86400);
	$hook->modifyAccessTokenClaim("aud","new_access_token_audience");
	echo $hook->display();
}catch (Exception $e){
        echo $e->getMessage();
}

库将返回以下答案。

{
    "commands": [
        {
            "type": "com.okta.identity.patch",
            "value": [
                {
                    "op": "add",
                    "path": "/claims/claim",
                    "value": "test_value"
                },
                {
                    "op": "replace",
                    "path": "/token/lifetime/expiration",
                    "value": 86400
                }
            ]
        },
        {
            "type": "com.okta.access.patch",
            "value": [
                {
                    "op": "replace",
                    "path": "/claims/aud",
                    "value": "new_access_token_audience"
                }
            ]
        }
    ]
}

导入内联钩子

可用方法

以下是实现类以成功执行钩子的方法。

getRaw()

此方法返回Okta作为数组发送的完整请求。

updateAppProfile($attribute, $value)

此方法指示Okta更新来自Okta的请求中在data.appUser下可用的配置文件属性。

updateProfile($attribute, $value)

此方法指示Okta更新来自Okta的请求中在data.user下可用的配置文件属性。

action($status)

此方法指示Okta对于当前导入的用户,要么在Okta内部创建新用户($status = "create"),要么将其与现有用户关联($status = "link")。

linkWith($user)

如果操作设置为将用户与现有用户关联,则可以使用此方法指定将当前导入的用户与之关联的用户ID。

display()

此方法显示对来自Okta的请求的最终响应。

示例

以下是一个示例脚本,用于修改用户配置文件和应用程序用户配置文件中的姓名,并将用户与具有用户ID 00uozbgc03wzqoaXp2p6的现有Okta用户关联。

use Okta\Hooks\ImportInlineHook;

try{
	$hook = new ImportInlineHook();
	$hook->updateProfile("firstName","John");
	$hook->updateProfile("lastName","Doe");
	$hook->updateAppProfile("firstName","Doe");
	$hook->updateAppProfile("lastName","John");
	$hook->action("link");
	$hook->linkWith("00uozbgc03wzqoaXp2p6");
	echo $hook->display();
}catch (Exception $e){
        echo $e->getMessage();
}

库将返回以下答案。

{
    "commands": [
        {
            "type": "com.okta.action.update",
            "value": {
                "result": "LINK_USER"
            }
        },
        {
            "type": "com.okta.user.update",
            "value": {
                "id": "00uozbgc03wzqoaXp2p6"
            }
        },
        {
            "type": "com.okta.user.profile.update",
            "value": {
                "firstName": "John",
                "lastName": "Doe"
            }
        },
        {
            "type": "com.okta.appUser.profile.update",
            "value": {
                "firstName": "Doe",
                "lastName": "John"
            }
        }
    ]
}

SAML断言内联钩子

可用方法

以下是实现类以成功执行钩子的方法。

getRaw()

此方法返回Okta作为数组发送的完整请求。

addClaim($name, $nameFormat, $xsiType, $value)

此方法指示Okta在断言中添加一个声明。

modifyClaim($name, $newValue)

此方法指示Okta修改断言中特定的声明值。

modifyAssertion($path, $newValue)

此方法指示Okta修改断言中特定的值。

display()

此方法显示对来自Okta的请求的最终响应。

示例

以下是一个示例脚本,用于在断言中添加新的声明。

use Okta\Hooks\SAMLInlineHook;

try{
	$hook = new SAMLInlineHook();
	$hook->addClaim("test","urn:oasis:names:tc:SAML:2.0:attrname-format:basic","xs:string","test");
	echo $hook->display();
}catch (Exception $e){
        echo $e->getMessage();
}

库将返回以下答案。

{
    "commands": [
        {
            "type": "com.okta.assertion.patch",
            "value": [
                {
                    "op": "add",
                    "path": "/claims/test",
                    "value": {
                        "attributes": {
                            "NameFormat": "urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
                        },
                        "attributeValues": [
                            {
                                "attributes": {
                                    "xsi:type": "xs:string"
                                },
                                "value": "test"
                            }
                        ]
                    }
                }
            ]
        }
    ]
}

注册内联钩子

可用方法

以下是实现类以成功执行钩子的方法。

getRaw()

此方法返回Okta作为数组发送的完整请求。

changeProfileAttribute($attribute, $value)

此方法指示Okta更新来自Okta的请求中在data.user.profile下可用的配置文件属性。

allowUser($status)

此方法指示Okta允许用户注册($status = TRUE)或不允许用户注册($status = FALSE)。

display()

此方法显示对来自Okta的请求的最终响应。

error($message, $errorCode, $reason, $locationType, $location, $domain)

此方法在注册时向最终用户显示错误消息,如文档中所示此处

示例

以下是一个示例脚本,用于修改用户配置文件中的姓名,然后阻止用户。

use Okta\Hooks\RegistrationInlineHook;

try{
	$hook = new RegistrationInlineHook();
	$hook->changeProfileAttribute("firstName", "John");
	$hook->changeProfileAttribute("lastName", "Doe");
	$hook->allowUser(FALSE);
	echo $hook->display();
}catch (Exception $e){
        echo $e->getMessage();
}

库将返回以下答案。

{
    "commands": [
        {
            "type": "com.okta.action.update",
            "value": {
                "action": "DENY"
            }
        },
        {
            "type": "com.okta.user.profile.update",
            "value": {
                "firstName": "John",
                "lastName": "Doe"
            }
        }
    ]
}

密码导入内联钩子

可用方法

以下是实现类以成功执行钩子的方法。

getRaw()

此方法返回Okta作为数组发送的完整请求。

getCredentials()

此方法将来自Okta的请求中的data.context.credential作为数组返回。

allow()

此方法显示已验证响应,告诉Okta凭据正确,并允许用户进行身份验证。

deny()

此方法显示未验证响应,告诉Okta凭据不正确,将不允许用户进行身份验证。

示例

以下是一个示例脚本,用于检查从Okta接收的用户名和密码,如果它们包含特定值,则允许请求。

use Okta\Hooks\PasswordInlineHook;

try{
	$hook = new PasswordInlineHook();
	if($hook->getCredentials()['username'] == "isaac.brock@example.com" && $hook->getCredentials()['password'] == "Okta")
		echo $hook->allow();
	else
		echo $hook->deny();
}catch (Exception $e){
        echo $e->getMessage();
}

库将返回以下答案。

{
    "commands": [{
        "type": "com.okta.action.update",
        "value": {
            "credential": "VERIFIED"
        }
    }]
}

有虫子吗?

如果在使用库时发现虫子或遇到问题,请在GitHub上创建问题此处,并将进一步调查。