mirror of
https://github.com/micromdm/micromdm/
synced 2026-08-13 05:45:41 +08:00
Refactor MDM service to return a payload from check-ins (#764)
* Refactor MDM service to return a payload from check-ins * Documented public methods, add documentation to main service interface * Remove interface-implementing comments
This commit is contained in:
@@ -85,32 +85,32 @@ func (mw *udidCertAuthMiddleware) Acknowledge(ctx context.Context, req mdm.Ackno
|
||||
return mw.next.Acknowledge(ctx, req)
|
||||
}
|
||||
|
||||
func (mw *udidCertAuthMiddleware) Checkin(ctx context.Context, req mdm.CheckinEvent) error {
|
||||
func (mw *udidCertAuthMiddleware) Checkin(ctx context.Context, req mdm.CheckinEvent) ([]byte, error) {
|
||||
// only validate device enrollments, user enrollments should be separate.
|
||||
if req.Command.EnrollmentID != "" {
|
||||
return mw.next.Checkin(ctx, req)
|
||||
}
|
||||
devcert, err := mdm.DeviceCertificateFromContext(ctx)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "error retrieving device certificate")
|
||||
return nil, errors.Wrap(err, "error retrieving device certificate")
|
||||
}
|
||||
switch req.Command.MessageType {
|
||||
case "Authenticate":
|
||||
// unconditionally save the cert hash on Authenticate message
|
||||
if err := mw.store.SaveUDIDCertHash([]byte(req.Command.UDID), hashCertRaw(devcert.Raw)); err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
return mw.next.Checkin(ctx, req)
|
||||
case "TokenUpdate", "CheckOut":
|
||||
matched, err := mw.validateUDIDCertAuth([]byte(req.Command.UDID), hashCertRaw(devcert.Raw))
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
if !matched && !mw.warnOnly {
|
||||
return errors.New("device certifcate UDID mismatch")
|
||||
return nil, errors.New("device certifcate UDID mismatch")
|
||||
}
|
||||
return mw.next.Checkin(ctx, req)
|
||||
default:
|
||||
return errors.Errorf("unknown checkin message type %s", req.Command.MessageType)
|
||||
return nil, errors.Errorf("unknown checkin message type %s", req.Command.MessageType)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user