dragosgaftoneanu / okta-hooks-php
用于在PHP应用程序中集成Okta Hooks功能的SDK。
Requires
- php: >=5.0
README
此存储库包含Okta Hooks PHP库的源代码,可用于在您的PHP应用程序中集成新的Okta Hooks功能。
⚠️ 免责声明:这不是官方产品,不符合Okta支持资格。
安装
您可以通过Composer运行以下命令来安装此库
composer require dragosgaftoneanu/okta-hooks-php
需求
- 一个Okta账户,称为组织(您可以通过免费开发者组织注册)
- 运行PHP 5.0+的本地Web服务器
- getallheaders()函数可用于使用
- 您的Okta组织启用了以下功能(您可以通过发送电子邮件到support@okta.com来请求它们)
目录
事件钩子
可用方法
以下是实现类以成功执行钩子的方法。
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上创建问题此处,并将进一步调查。