[ 
https://issues.apache.org/jira/browse/LIVY-595?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16837210#comment-16837210
 ] 

yanchao commented on LIVY-595:
------------------------------

*livy log:*

19/05/10 17:15:48 RPC-Handler-4 INFO RpcServer: server challenge payload byte 
is : [5, 4, 0, -1, 0, 12, 0, 0, 0, 0, 0, 0, 14, 12, 88, 110, 4, 1, 0, 0, 91, 
-60, -82, 68, 104, 45, -96, -54, 76, -95, 0, 57].
Krb5Context.unwrap: token=[05 04 00 ff 00 0c 00 00 00 00 00 00 0e 0c 58 6e 04 
01 00 00 5b c4 ae 44 68 2d a0 ca 4c a1 00 39 ]
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: 2019-05-10 
17:15:48,059 | INFO | RPC-Handler-3 | yc add : SASL confidentiality enabled, 
and class is org.apache.livy.rsc.rpc.Rpc$SaslClientHandler | 
org.apache.livy.rsc.rpc.SaslHandler.channelRead0(SaslHandler.java:90)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: 2019-05-10 
17:15:48,059 | INFO | RPC-Handler-3 | yc add onComplete | 
org.apache.livy.rsc.rpc.SaslHandler.channelRead0(SaslHandler.java:95)
Krb5Context.unwrap: data=[04 01 00 00 ]
19/05/10 17:15:48 RPC-Handler-4 INFO RpcServer: AuthorizeCallback set true
19/05/10 17:15:48 RPC-Handler-4 INFO{color:#FF0000} RpcServer: after server 
evaluate response byte is : null.{color}
19/05/10 17:15:48 RPC-Handler-4 INFO RpcServer$SaslServerHandler: Sending SASL 
challenge response clientId is null, payload is null.
19/05/10 17:15:48 RPC-Handler-4 INFO KryoMessageCodec: {color:#FF0000}Encoded 
message of type org.apache.livy.rsc.rpc.Rpc$SaslMessage (4 bytes){color}
19/05/10 17:15:48 RPC-Handler-4 INFO KryoMessageCodec: Encoded ByteBuf class 
io.netty.buffer.UnpooledUnsafeNoCleanerDirectByteBuf
19/05/10 17:15:48 RPC-Handler-4 DEBUG Rpc: [id: 0x36c6e919, 
L:/192.168.100.25:10000 - R:/192.168.100.25:59218] WRITE: 8B
 +-------------------------------------------------+
 | 0 1 2 3 4 5 6 7 8 9 a b c d e f |
+--------+-------------------------------------------------+----------------+
|00000000| 00 00 00 04 14 01 00 00 |........ |

+--------+-------------------------------------------------+----------------+
19/05/10 17:15:48 RPC-Handler-4 DEBUG Rpc: [id: 0x36c6e919, 
L:/192.168.100.25:10000 - R:/192.168.100.25:59218] FLUSH
19/05/10 17:15:48 RPC-Handler-4 INFO RpcServer$SaslServerHandler: ended 
writeAndFlush!
19/05/10 17:15:48 RPC-Handler-4 INFO RpcServer: server isComplete true
19/05/10 17:15:48 RPC-Handler-4 INFO RpcServer$SaslServerHandler: yc add : SASL 
confidentiality enabled, and class is 
org.apache.livy.rsc.rpc.RpcServer$SaslServerHandler
19/05/10 17:15:48 RPC-Handler-4 INFO RpcServer$SaslServerHandler: yc add 
onComplete
19/05/10 17:15:48 RPC-Handler-4 INFO RpcServer: onComplete.

 

*driver log:*

19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: 2019-05-10 
17:15:48,062 | DEBUG | RPC-Handler-3 | [id: 0xc76a1550, L:/192.168.100.25:59218 
- R:/192.168.100.25:10000] RECEIVED: 8B
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: 
+-------------------------------------------------+
19/05/10 17:15:48 Thread-122 INFO LineBufferedStream: stdout: 
Krb5Context.unwrap: token=[14 01 00 00 ]
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: | 0 1 2 3 4 5 6 7 
8 9 a b c d e f |
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: 
+--------+-------------------------------------------------+----------------+
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: |00000000| 00 00 
00 04 14 01 00 00 |........ |
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: 
+--------+-------------------------------------------------+----------------+ | 
io.netty.util.internal.logging.Slf4JLogger.debug(Slf4JLogger.java:71)
{color:#FF0000}19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: 
2019-05-10 17:15:48,062 | INFO | RPC-Handler-3 | unwrap data is [20, 1, 0, 0], 
offset is 0, len is 4. | 
org.apache.livy.rsc.rpc.Rpc$SaslClientHandler.unwrap(Rpc.java:480){color}
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: 2019-05-10 
17:15:48,064 | INFO | RPC-Handler-3 | [ReplDriver] Caught exception in channel 
pipeline. | 
org.apache.livy.rsc.rpc.RpcDispatcher.exceptionCaught(RpcDispatcher.java:177)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: 
io.netty.handler.codec.DecoderException: 
javax.security.sasl.SaslException:{color:#FF0000} Problems unwrapping SASL 
buffer [Caused by GSSException: Defective token detected (Mechanism level: Wrap 
Token (new format):Cannot read all 12 bytes needed to form this token!)]{color}
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:442)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.handler.codec.ByteToMessageCodec.channelRead(ByteToMessageCodec.java:103)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:357)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:343)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:336)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.handler.logging.LoggingHandler.channelRead(LoggingHandler.java:240)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:357)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:343)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:336)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:357)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:343)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:336)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1294)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:357)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:343)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:911)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:643)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:566)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:480)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:442)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:131)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
java.lang.Thread.run(Thread.java:748)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: Caused by: 
javax.security.sasl.SaslException: Problems unwrapping SASL buffer [Caused by 
GSSException: Defective token detected (Mechanism level: Wrap Token (new 
format):Cannot read all 12 bytes needed to form this token!)]
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
com.sun.security.sasl.gsskerb.GssKrb5Base.unwrap(GssKrb5Base.java:86)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
org.apache.livy.rsc.rpc.Rpc$SaslClientHandler.unwrap(Rpc.java:481)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
org.apache.livy.rsc.rpc.KryoMessageCodec.doWrapOrUnWrap(KryoMessageCodec.java:146)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
org.apache.livy.rsc.rpc.KryoMessageCodec.maybeDecrypt(KryoMessageCodec.java:121)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
org.apache.livy.rsc.rpc.KryoMessageCodec.decode(KryoMessageCodec.java:76)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.handler.codec.ByteToMessageCodec$1.decode(ByteToMessageCodec.java:42)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: ... 24 more
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: Caused by: 
GSSException: Defective token detected (Mechanism level: Wrap Token (new 
format):Cannot read all 12 bytes needed to form this token!)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
sun.security.jgss.krb5.MessageToken_v2.<init>(MessageToken_v2.java:258)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
sun.security.jgss.krb5.MessageToken_v2.<init>(MessageToken_v2.java:165)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
sun.security.jgss.krb5.WrapToken_v2.<init>(WrapToken_v2.java:71)
19/05/10 17:15:48 Thread-123 INFO LineBufferedStream: stdout: at 
sun.security.jgss.krb5.Krb5Context.unwrap(Krb5Context.java:1056)

> Replace DEGEST-MED5 with GSSAPI(Kerberos) in the RPC sasl
> ---------------------------------------------------------
>
>                 Key: LIVY-595
>                 URL: https://issues.apache.org/jira/browse/LIVY-595
>             Project: Livy
>          Issue Type: Improvement
>          Components: RSC, Server
>    Affects Versions: 0.5.0
>            Reporter: yanchao
>            Priority: Blocker
>   Original Estimate: 168h
>  Remaining Estimate: 168h
>
> This is a English version
> DIGEST-MD5 has been considered as a non-secure encryption mechanism in the 
> industry, so according to the company's security requirements, it is replaced 
> by GSSAPI (kerberos authentication);
> Initially, I just changed the configuration value of livy. rsc. rpc. sasl. 
> mechanisms to GSSAPI, but reported an error: Failed to find any Kerberos 
> credentails; so I started my painful journey to modify the source code (thank 
> you very much if you have a feasible configuration plan to inform). The 
> specific steps are as follows:
>  
> 1) In the Rpc and RpcServer classes, create LoginContext and login when 
> creating client and server for sasl, and encapsulate Sasl. createSaslServer 
> and Sasl. createSaslClient with Subject. doAs.
> 2) The parameters of Sasl. createSaslServer and Sasl. createSaslClient mainly 
> change protocol to the user name of principal (i.e. the first paragraph of 
> principal), and server Name to the qualified name of principal (i.e. the 
> second paragraph of principal). Other parameters remain unchanged and login 
> succeeds.
>  
> Question: Client and server can communicate, the first sendHello can succeed, 
> but the second time Livy returns token to driver, driver unwrap error: 
> {color:#FF0000}Caused by GSSException: Defective token detection (Mechanism 
> level: Wrap Token (new format): Cannot read all 12 bytes needed to form this 
> token!){color}
>  
> My analysis: I tracked livy's log. The byte array returned to driver is null 
> and sent to driver by Chanel Rpc.SaslMessage object, when unwrap, \{data is 
> [20, 1, 0, 0], offset is 0, len is 4}, driver unwrap will report an error.
>  
>  
> The problem is too difficult to solve, I need help now. thinks everyone.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to