@@ -2,29 +2,36 @@ package api
22
33import (
44 "github.com/madappgang/identifo/v2/logging"
5+ "github.com/madappgang/identifo/v2/model"
56)
67
7- type JournalOperation string
8+ type AuditOperation string
89
910const (
10- JournalOperationLoginWithPassword JournalOperation = "login_with_password"
11- JournalOperationLoginWithPhone JournalOperation = "login_with_phone"
12- JournalOperationLoginWith2FA JournalOperation = "login_with_2fa"
13- JournalOperationRefreshToken JournalOperation = "refresh_token"
14- JournalOperationOIDCLogin JournalOperation = "oidc_login"
15- JournalOperationFederatedLogin JournalOperation = "federated_login"
16- JournalOperationRegistration JournalOperation = "registration"
17- JournalOperationLogout JournalOperation = "logout"
18- JournalOperationImpersonatedAs JournalOperation = "impersonated_as"
11+ AuditOperationLoginWithPassword AuditOperation = "login_with_password"
12+ AuditOperationLoginWithPhone AuditOperation = "login_with_phone"
13+ AuditOperationLoginWith2FA AuditOperation = "login_with_2fa"
14+ AuditOperationRefreshToken AuditOperation = "refresh_token"
15+ AuditOperationOIDCLogin AuditOperation = "oidc_login"
16+ AuditOperationFederatedLogin AuditOperation = "federated_login"
17+ AuditOperationRegistration AuditOperation = "registration"
18+ AuditOperationLogout AuditOperation = "logout"
19+ AuditOperationImpersonatedAs AuditOperation = "impersonated_as"
1920)
2021
21- func (ar * Router ) journal (
22- op JournalOperation ,
22+ func (ar * Router ) audit (
23+ op AuditOperation ,
2324 userID , appID , device , accessRole string ,
2425 scopes []string ,
26+ accessToken , refreshToken string ,
2527) {
2628 iss := ar .server .Services ().Token .Issuer ()
2729
30+ auditSettings := ar .server .Settings ().Audit
31+
32+ accessToken = maskToken (accessToken , auditSettings .TokenRecording )
33+ refreshToken = maskToken (refreshToken , auditSettings .TokenRecording )
34+
2835 // TODO: Create an interface for the audit log
2936 // Implement it for logging to stdout, a database, or a remote service
3037 ar .logger .Info ("audit_record" ,
@@ -35,5 +42,24 @@ func (ar *Router) journal(
3542 "issuer" , iss ,
3643 "accessRole" , accessRole ,
3744 "scopes" , scopes ,
45+ "accessToken" , accessToken ,
46+ "refreshToken" , refreshToken ,
3847 )
3948}
49+
50+ func maskToken (token string , tokenRecording model.TokenRecording ) string {
51+ switch tokenRecording {
52+ case model .TokenRecordingNone :
53+ return "<redacted>"
54+ case model .TokenRecordingObfuscated :
55+ if len (token ) < 32 {
56+ return "<short>"
57+ }
58+
59+ return token [:6 ] + "..." + token [len (token )- 6 :]
60+ case model .TokenRecordingFull :
61+ return token
62+ default :
63+ return "<redacted>"
64+ }
65+ }
0 commit comments