Google Workspace for Education with Kastr: staff directory sync, and why there is no Google Sign-In
Two questions, one page. Can Google Workspace be the source of your staff directory in Kastr — yes, with caveats about what a directory does and does not know. And can staff sign in with their Google account — no, and here is the reasoning, the design of what we use instead, and what a security reviewer should test.
| SAML / OIDC SSO | Password + MFA | Magic link (what Kastr uses) | |
|---|---|---|---|
| Works for staff | Yes, well | Yes | Yes, with email friction |
| Works for 20,000 guardians | No accounts exist | 20,000 passwords to reset | Yes — nothing to remember |
| Credential to steal | IdP session | A reusable password | A token valid 15 minutes, once |
| Offboarding | Immediate at the IdP | Manual | Role end date, next request fails |
| MFA available | Yes, at the IdP | Yes | No — none, today |
| Phishing resistance | Depends on factors | Poor | Single-use, device-bound, short-lived |
| Available in Kastr today | No | No | Yes, and it is the only option |
The bottom row is the honest summary: this is not a menu. Magic link is the only authentication Kastr has. The table exists because the trade-off is real and worth arguing about, not because we are pretending to have made a considered selection from three shipped options.
Using Google as your staff directory source
Google Workspace knows who works for your district and, if your organisational-unit tree is maintained, roughly where. That makes it a reasonable staff source and a hopeless student-and-guardian source — guardians do not have district Google accounts, and student accounts carry no contact information for their families.
So the topology is: staff from Google, students and guardians from the SIS. Two files, one endpoint.
For the staff extract, use the Admin SDK Directory API and pull active accounts only, with the fields that matter: primary email, given and family names, organisational unit path, suspended status, and whatever custom schema your district uses to hold a role or building code. Filter out suspended accounts — a suspended account is a person who should not be receiving staff broadcasts.
A worked example of OU-to-role mapping in a three-building district:
/Staff/Lincoln Elementary/Teachers→ teacher role at the Lincoln Elementary organisation./Staff/Lincoln Elementary/Office→ front-office role at Lincoln Elementary, which is the role that gets the messaging capability in most districts./Staff/District Office→ district-level role at the root organisation, which through the row-level security hierarchy can see all three buildings.
Each role is effective-dated, so a teacher moving from Lincoln to Washington in January has two role rows with a clean boundary rather than an overwritten field. That matters when someone asks in June who was at which building in March.
Groups are not roles
The tempting shortcut is to use Google Groups as audiences: you already have all-staff@, lincoln-teachers@, and a dozen others, and they are more or less maintained.
Two reasons not to build on them. First, group membership carries no dates. A group tells you who is in it right now and nothing about when they joined or left, so it cannot answer a question about the past — and roster questions are almost always about the past when they are being asked seriously. Second, groups drift. Every district has at least one distribution list that has not been accurate since 2021 and that nobody owns.
Use the OU path, which is maintained because account provisioning depends on it, and treat groups as a cross-check rather than a source. To answer the related question directly: Kastr cannot send to a Google Group as an address. Messages go to people in the roster, on the contact points the roster gave us, which is what makes per-person consent state, language preference and delivery evidence possible at all.
Why there is no Google Sign-In, stated plainly
Kastr supports no SSO. No SAML, no OIDC, no Google Sign-In, no ClassLink, no Clever, and no MFA of any kind. Magic link is the only authentication path in the product, for a district superintendent and for a guardian alike.
The reasoning: in a 12,000-student district there are roughly 20,000 guardians and 900 staff. Guardians hold no district-issued account and never will. An authentication design that works beautifully for 4% of the people the system serves, and requires a second mechanism for the other 96%, means running two authentication systems — and the weaker one still exists. We built one path and made it as strong as a single-factor path can be.
Where that costs you. Staff sign in through their email rather than through the portal they already have open, which is real daily friction. There is no MFA to show a security reviewer. There is no immediate central offboarding kill switch of the kind an identity provider gives you — ending a role stops the next sign-in, but it is not the same control. If your district has a policy mandating SSO for all vendor systems, Kastr does not meet it today. That is a legitimate reason to choose someone else and we would rather you knew in August than in March.
What a security reviewer should test instead
The magic link design is specific enough to be tested in ten minutes, which is more than can be said for most vendor security claims. Hand your reviewer this list:
- Single use. Request a link, open it, then open it again. The second attempt must fail. Consumption is atomic, which also defeats the mail-scanner prefetch problem where a security appliance opens the link before the human does.
- Fifteen-minute expiry. Request a link, wait, then use it. Tokens are 32 random bytes with a hard time-to-live.
- Same-device binding. Request on one browser, open in another. It must fail. The binding is a cookie holding the SHA-256 of the token, compared with a constant-time comparison.
- No account enumeration. Request a link for an address that does not exist. The response must be identical to the one for a real address, in both content and timing.
- Session records. Confirm that the stored session IP is a hash rather than the address itself.
Alongside that, the parts a reviewer usually cares about more: tenant isolation is enforced by Postgres row-level security under a non-owner, DML-only role, is hierarchy-aware, fails closed with no organisation context, and is covered by a cross-tenant leakage suite that runs in CI against real Postgres 16. Every administrative action lands in a per-organisation SHA-256 hash-chained audit log that is append-only at two independent layers — revoked table permissions and RLS policies with no UPDATE or DELETE path.
Questions people actually ask
Can staff sign in to Kastr with their Google account?
No. There is no Google Sign-In and no SSO of any kind. Staff receive a single-use magic link by email, valid fifteen minutes and bound to the requesting device. It is real friction compared with a portal tile, and we would rather state it than describe an unbuilt roadmap.
Does Kastr support SAML or OIDC single sign-on?
No. Neither, and no MFA either. Magic link is the only authentication method in the product. If your district policy requires SSO for all vendor systems, Kastr does not meet that policy today and that is a legitimate reason to rule us out.
Is magic-link authentication acceptable to a district security review?
Sometimes, and it depends on your policy rather than on the design. What we can offer is a design a reviewer can test in ten minutes: 32-byte tokens, fifteen-minute expiry, atomic single-use consumption, same-device binding with a constant-time comparison, no account enumeration, and session IPs stored hashed. If your policy mandates a second factor, none of that clears the bar.
How do I keep Kastr staff roles in step with our Google OU structure?
Export active accounts from the Admin SDK Directory API with the OU path, map paths to roles and organisations in your extract job, and POST it alongside the SIS roster. Roles are effective-dated, so a teacher changing buildings mid-year produces two clean role rows rather than an overwritten field. Filter out suspended accounts.
Can Kastr message a Google Group?
No. Messages go to people in the roster on the contact points the roster supplied, not to distribution addresses. That is what makes per-person consent state, language preference and delivery evidence possible. Group membership also carries no dates, so it cannot answer a question about who was included last March.
One price. Every feature. Locked for three years.
$3.50 per student per year under 5,000 students. No tiers, no add-on modules, no per-message fees. Published on the site because you should not have to book a call to learn a price.