Dear Eric,
Sorry for my misunderstanding. Followings are some pseudocode examples for 
status value changes. But in the real domain business model, there may be other 
requirement limitations, running code may be different.  Please note that I 
just listed some major situations, not all of them.
1. organization create

add "pendingCreate"

2. organization update

if ("serverUpdateProhibited" or "pendingDelete" or "pendingUpdate" existed) 
    cannot update
else 
    go 

if ("pendingCreate" existed) 
    can update but no "pendingUpdate" 
else 
    update and add "pendingUpdate"

if ("clientUpdateProhibited" existed) 
    cannot update
else 
    go 

if (recv 'remove clientUpdateProhibited' && other status update commands) 
    cannot update

3. organization delete

if ("clientDeleteProhibited" or "serverDeleteProhibited" or "pendingUpdate" or 
"pendingDelete" existed)//no pendingCreate 
    cannot delete 
    cannot add "pendingDelete" 

if ("pendingCreate" existed) 
    remove "pendingCreate" 
    add "pendingDelete" 

4. other status actions

if (organization is linked with an EPP object && "clientLinkedProhibited" or 
"serverLinkedProhibited" not exist) 
    add "linked" 

if (organization status is null || only "linked" existed) 
    add "ok" 
else 
    remove "ok"

Regards,
Linlin


Linlin Zhou
 
From: Eric Rescorla
Date: 2018-10-31 11:23
To: zhoulinlin
CC: regext-chairs; pieter.vandepitte; IESG; regext; draft-ietf-regext-org
Subject: Re: [regext] Eric Rescorla's Discuss on draft-ietf-regext-org-11: 
(with DISCUSS and COMMENT)


On Tue, Oct 30, 2018 at 7:25 PM Linlin Zhou <zhoulin...@cnnic.cn> wrote:
Dear Eric,
Please see my feedbaks below.

Regards,
Linlin


Linlin Zhou
----------------------------------------------------------------------
DISCUSS:
----------------------------------------------------------------------
 
Rich version of this review at:
https://mozphab-ietf.devsvcdev.mozaws.net/D3624
 
 
This DISCUSS should be easy to clear. I have noted a few points where
I do not believe that the spec is sufficiently clear to implement.
 
DETAIL
S 3.4.
>   
>      o  clientUpdateProhibited, serverUpdateProhibited: Requests to update
>         the object (other than to remove this status) MUST be rejected.
>   
>      o  clientDeleteProhibited, serverDeleteProhibited: Requests to delete
>         the object MUST be rejected.
 
How does access control work here? If either of these values are set,
then it must be rejected?
[Linlin] If you mean that clientUpdateProhibited and serverUpdateProhibited are 
set, these two statuses can coexist in the system. "clientUpdateProhibited" is 
set by the client and "serverUpdateProhibited" is set by the server.

That's not what I mean. What I mean is "what is the access control rule that 
the server is supposed to apply".
[Linlin] The EPP statuses defined in draft-ietf-regext-org follows the model 
used in the other EPP RFC's, including RFC 5731- RFC 5733. The statuses define 
the command-level access control rules, where each supported transform command 
(update and delete) includes a corresponding client-settable ("client") and 
server-settable ("server") that prohibits execution of the command by the 
client. The client is allowed make an update only to remove the 
"clientUpdateProhibited" status when the "clientUpdateProhibited" status is 
set. Client-specific access control rules (e.g., sponsoring client versus 
non-sponsoring client) is not defined by the statuses, but is up to server 
policy.

I'm sorry, but this still isn't clear. Can you perhaps send some pseudocode? 
[Linlin] Our proposal is to add the lead-in bolded text to match the existing 
EPP RFC's to the Organization mapping. There has been no issues with the 
interpretation of the statuses with the EPP RFCs, so it's best to match them as 
closely as possible. In section 3.4,

An organization object MUST always have at least one associated status 
value. Status values can be set only by the client that sponsors an 
organization object and by the server on which the object resides. A 
client can change the status of an organization object using the EPP 
<update> command. Each status value MAY be accompanied by a string 
of human-readable text that describes the rationale for the status 
applied to the object. 

A client MUST NOT alter status values set by the server. A server 
MAY alter or override status values set by a client, subject to local 
server policies. The status of an object MAY change as a result of 
either a client-initiated transform command or an action performed by 
a server operator.

Status values that can be added or removed by a client are prefixed 
with "client". Corresponding status values that can be added or 
removed by a server are prefixed with "server". The "hold" and 
"terminated" status values are server-managed when the organization 
has no parent identifier [Section 3.6] and otherwise MAY be client- 
managed based on server policy. Status values that 
do not begin with either "client" or "server" are server-managed.

Take "clientUpdateProhibited" for example. 
If status value "clientUpdateProhibited" is set by a client 
then <update> command is not allowed to perform by a client 
If status value "clientUpdateProhibited" is removed by a client or a server 
then no limitation of performing EPP commands 

I think we are talking past each other. The question I am asking is what is the 
access control algorithm for changing other values depending on whether 
{client,server}UpdateProhibited is set.

-Ekr
_______________________________________________
regext mailing list
regext@ietf.org
https://www.ietf.org/mailman/listinfo/regext

Reply via email to