179 logVaultAccess
This commit is contained in:
+16
-1
@@ -19,6 +19,7 @@
|
|||||||
<cfcatch type="ANY">
|
<cfcatch type="ANY">
|
||||||
<!---configure right here--->
|
<!---configure right here--->
|
||||||
<!---для ясности--->
|
<!---для ясности--->
|
||||||
|
<!--- *** кажется, этот подход устарел --->
|
||||||
<cfset this.config.environment = "dev-default" />
|
<cfset this.config.environment = "dev-default" />
|
||||||
<cfset this.config.datasource = "cmdb" />
|
<cfset this.config.datasource = "cmdb" />
|
||||||
<cfset this.config.is_dev_default = "true" /><!---это виднее в сообщении об ошибке--->
|
<cfset this.config.is_dev_default = "true" /><!---это виднее в сообщении об ошибке--->
|
||||||
@@ -51,7 +52,7 @@
|
|||||||
|
|
||||||
//variables.framework.docs={};
|
//variables.framework.docs={};
|
||||||
variables.framework.docs.APIName="svc-api";
|
variables.framework.docs.APIName="svc-api";
|
||||||
variables.framework.docs.APIVersion="0.178"; /*$ git config --global --unset user.password*/
|
variables.framework.docs.APIVersion="0.179"; /*$ git config --global --unset user.password*/
|
||||||
|
|
||||||
variables.framework.globalHeaders = structNew();
|
variables.framework.globalHeaders = structNew();
|
||||||
variables.framework.globalHeaders["Access-Control-Expose-Headers"] = "Location";
|
variables.framework.globalHeaders["Access-Control-Expose-Headers"] = "Location";
|
||||||
@@ -284,6 +285,8 @@
|
|||||||
|
|
||||||
var usrCustomerInfo=getUsrCustomerInfo(idpUserData.userInfo.contactId, idpUserData.userInfo.companyId);
|
var usrCustomerInfo=getUsrCustomerInfo(idpUserData.userInfo.contactId, idpUserData.userInfo.companyId);
|
||||||
|
|
||||||
|
//dump(idpUserData);dump(usrCustomerInfo);abort;
|
||||||
|
|
||||||
if (lCase(arguments.cfc) EQ 'user') {
|
if (lCase(arguments.cfc) EQ 'user') {
|
||||||
if (structIsEmpty(usrCustomerInfo)) return representationOf("User information not found").withStatus(404);
|
if (structIsEmpty(usrCustomerInfo)) return representationOf("User information not found").withStatus(404);
|
||||||
}
|
}
|
||||||
@@ -294,6 +297,9 @@
|
|||||||
arguments.requestArguments.contragentId=-1; //Integer
|
arguments.requestArguments.contragentId=-1; //Integer
|
||||||
arguments.requestArguments.contractId=-1; //Integer
|
arguments.requestArguments.contractId=-1; //Integer
|
||||||
arguments.requestArguments.specificationId=-1; //Integer
|
arguments.requestArguments.specificationId=-1; //Integer
|
||||||
|
arguments.requestArguments.isImpersonated=false;
|
||||||
|
arguments.requestArguments.clientID="";
|
||||||
|
arguments.requestArguments.login="";
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -305,6 +311,15 @@
|
|||||||
arguments.requestArguments.contragentId=usrCustomerInfo.contragentId; //Integer
|
arguments.requestArguments.contragentId=usrCustomerInfo.contragentId; //Integer
|
||||||
arguments.requestArguments.contractId=usrCustomerInfo.contractId; //Integer
|
arguments.requestArguments.contractId=usrCustomerInfo.contractId; //Integer
|
||||||
arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //Integer
|
arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //Integer
|
||||||
|
try {
|
||||||
|
arguments.requestArguments.isImpersonated=usrCustomerInfo.impersonation.is_impersonated;
|
||||||
|
arguments.requestArguments.clientID=usrCustomerInfo.clientID;
|
||||||
|
arguments.requestArguments.login=usrCustomerInfo.login;
|
||||||
|
} catch (e) {
|
||||||
|
arguments.requestArguments.isImpersonated=false; // так себе решение, надо было бы NULL
|
||||||
|
arguments.requestArguments.clientID="";
|
||||||
|
arguments.requestArguments.login="";
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|||||||
@@ -56,9 +56,9 @@
|
|||||||
</cfif>
|
</cfif>
|
||||||
|
|
||||||
<!--- <cfdump var=#local.qCurrentState#/><cfabort/> --->
|
<!--- <cfdump var=#local.qCurrentState#/><cfabort/> --->
|
||||||
|
<cfset var vaultUrl=""/>
|
||||||
<cftry>
|
<cftry>
|
||||||
<cfset var vaultUrl=""/>
|
|
||||||
<cfset var instanceData=#deserializeJson(local.qCurrentState.instance_data)#/>
|
<cfset var instanceData=#deserializeJson(local.qCurrentState.instance_data)#/>
|
||||||
<cfif structKeyExists(instanceData,"vaultUrl")>
|
<cfif structKeyExists(instanceData,"vaultUrl")>
|
||||||
<cfset vaultUrl=instanceData.vaultUrl/> <!--- v001 --->
|
<cfset vaultUrl=instanceData.vaultUrl/> <!--- v001 --->
|
||||||
@@ -120,6 +120,16 @@
|
|||||||
</cfcatch>
|
</cfcatch>
|
||||||
</cftry>
|
</cftry>
|
||||||
|
|
||||||
|
<!--- логируем успешную попытку доступа. (если логировать сначала - неизвестен результат. *** Можно в catch логировать неуспешный --->
|
||||||
|
<cfset logVaultAccess(
|
||||||
|
this.iamUrl,
|
||||||
|
request.auth_header,
|
||||||
|
arguments.instanceUid,
|
||||||
|
arguments.secretName,
|
||||||
|
vaultUrl,
|
||||||
|
arguments.login,
|
||||||
|
arguments.clientID,
|
||||||
|
arguments.isImpersonated)/>
|
||||||
|
|
||||||
<cfset var out = structNew("linked")/>
|
<cfset var out = structNew("linked")/>
|
||||||
<cfset "out.name" = #arguments.secretName#/>
|
<cfset "out.name" = #arguments.secretName#/>
|
||||||
@@ -129,4 +139,71 @@
|
|||||||
<cfreturn representationOf(out) />
|
<cfreturn representationOf(out) />
|
||||||
</cffunction>
|
</cffunction>
|
||||||
|
|
||||||
|
<cffunction name="logVaultAccess" returntype="void">
|
||||||
|
<cfargument name="iamUrl" type="string" required=true hint=""/>
|
||||||
|
<cfargument name="authHeader" type="string" required=true hint="type:string"/>
|
||||||
|
<cfargument name="instanceUid" type="string" required=true hint="type:UUID"/>
|
||||||
|
<cfargument name="secretName" type="string" required=true hint="type:string"/>
|
||||||
|
<cfargument name="vaultUrl" type="string" required=true hint="type:string"/>
|
||||||
|
<cfargument name="login" type="string" required=true hint="type:string"/>
|
||||||
|
<cfargument name="wz" type="string" required=true hint="type:string WZ"/>
|
||||||
|
<cfargument name="isImpersonated" type="string" required=true hint="type:boolean"/>
|
||||||
|
|
||||||
|
<cftry>
|
||||||
|
<cfset var local={}/>
|
||||||
|
<!--- расшифруем некоторые данные пользователя для читабельности --->
|
||||||
|
<!--- нужно еще учесть имперсонирование --->
|
||||||
|
<!--- <cfquery name="local.qUsr" result="local.result">
|
||||||
|
select
|
||||||
|
u.usr_id
|
||||||
|
u.login
|
||||||
|
u.email
|
||||||
|
k.contragent_id
|
||||||
|
k.external_uid::text as external_uid
|
||||||
|
k.contragent
|
||||||
|
from usr u
|
||||||
|
left outer join contragent k on (u.contragent_id=k.contragent_id)
|
||||||
|
where u.usr_id=<cfqueryparam cfsqltype="cf_sql_integer" value=#ARGUMENTS.usrId#/>
|
||||||
|
</cfquery> --->
|
||||||
|
|
||||||
|
|
||||||
|
<cfset var msg = {
|
||||||
|
"event_type": "credentials_access",
|
||||||
|
"ip_address": "#CGI.REMOTE_ADDR#",
|
||||||
|
"user_agent": "#CGI.HTTP_USER_AGENT#",
|
||||||
|
"metadata": {
|
||||||
|
"credentials_type": "instance_secret",
|
||||||
|
"vault_url": "#arguments.vaultUrl#",
|
||||||
|
"secretName": "#arguments.secretName#",
|
||||||
|
"action": "view",
|
||||||
|
"instance_uid": "#arguments.instanceUid#",
|
||||||
|
"environment": "#getStand()#",
|
||||||
|
"usr_id": "#arguments.usrId#",
|
||||||
|
"contragent_id": "#arguments.contragentId#",
|
||||||
|
"login": "#arguments.login#",
|
||||||
|
"wz": "#arguments.wz#",
|
||||||
|
"isImpersonated": "#arguments.isImpersonated#"
|
||||||
|
}
|
||||||
|
}/>
|
||||||
|
<!--- <cfdump var=#msg#/><cfabort/> --->
|
||||||
|
|
||||||
|
<cfhttp method="post"
|
||||||
|
url="#arguments.iamUrl#"
|
||||||
|
timeout="3"
|
||||||
|
charset="utf-8"
|
||||||
|
result="local.res"
|
||||||
|
>
|
||||||
|
<cfhttpparam type="HEADER" name="Authorization" value="#arguments.authHeader#">
|
||||||
|
<cfhttpparam type="HEADER" name="Content-Type" value="application/json"/>
|
||||||
|
<cfhttpparam type="BODY" value="#serializeJson(msg)#"/>
|
||||||
|
</cfhttp>
|
||||||
|
|
||||||
|
<!--- <cfdump var=#local.res#/><cfabort/> --->
|
||||||
|
<cfcatch type="any">
|
||||||
|
<cfrethrow/><!--- на этапе отладки лучше тут падать --->
|
||||||
|
</cfcatch>
|
||||||
|
</cftry>
|
||||||
|
|
||||||
|
</cffunction>
|
||||||
|
|
||||||
</cfcomponent>
|
</cfcomponent>
|
||||||
Reference in New Issue
Block a user